PowerShell

【PowerShell】Pipeline(パイプライン)とは何か

2018年7月12日


Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

こんにちは!SE ブログの相馬です。

 

 

 

今回はパイプラインについて書きました。早速パイプラインとは何かから説明します。

 

 

 

パイプラインとは

 

 

パイプラインとは、先行のコマンドの結果をパイプラインを使って次のコマンドに渡してあげる為のものです。PowerShell では、パイプラインを |(縦棒)で書きます。例えばイメージとしてこんな感じです。ここでは、Get-ChildItem コマンドレットを使って、C ドライブの Program Files というフォルダの中にあるファイルやフォルダをテキストファイルとして出力します。ですのでパイプの前と後の処理としてはこんな感じです。

 

 

 

上の処理の順番について説明しますと

 

 

  1. Get-ChildItem コマンドレットで C:\Program Files 以下のディレクトリの情報(ファイルやフォルダの情報)を取得する。
  2. 取得した情報を Out-File コマンドレットで C:\temp\programfiles.txt を指定してテキストファイルとして出力する。

 

 

Get-ChildItem コマンドレットについては @IT の記事が参考になります。Out-File コマンドレットは TechNet の記事が分かりやすいです。

 

【 Get-ChildItem 】コマンドレット――ディレクトリの情報を取得する | @IT

Out-File コマンドレットの使用 | Microsoft TechNet

 

 

パイプラインとはコマンドレットの処理結果の情報を、パイプラインを使って、次のコマンドレットに渡す事までお分かりいただけたかと思います。それでは、パイプラインでは実際どんな情報が渡されるのでしょうか?次に進みます。

 

 

 

パイプラインで流れる情報はオブジェクト

 

 

パイプラインの前と後ではコマンドレットを使いますが、処理結果の情報としてコンソールにはテキストが表示されます。では、実際にパイプを使って渡す内容はこのテキストデータかというと実はそうではないのです。パイプラインで受け渡しされる情報、つまりその中を流れる情報、つまりデータはオブジェクトになります。オブジェクトとしてデータが渡されるので、次のコマンドレットではそのオブジェクトを操作できます。ですので必要に応じてオブジェクトの中に入っているなどの情報を取り出せたりするので便利です。

 

 

例えば、別の記事に書いてあるのですが、これが分かり易いと思います。ここでは、AD に参加しているコンピューターの情報を取得して、取得したオブジェクトをパイプラインで渡して、その中にあるプロパティを取り出して整形しています。

 

 

 

 

上の処理の順番について説明します。

 

 

  1. Get-ADComputer コマンドレットで AD に参加しているコンピューターを全て取得する。
  2. 取得したオブジェクトを Format-Table コマンドレットで必要なプロパティだけ指定して整形して表示する。

 

 

こんな感じで最初のコマンドレットで、とりあえず欲しい情報を取得して、次のコマンドレットでその情報の中にあるものを必要な分だけ取り出して表示したり、データに出力したりする事ができます。このオブジェクトというのは理解していない方はなかなか分かりにくいと思いますが、ここでは箱みたいな物だと思ってください。

 

 

上の処理では AD に参加しているコンピューター一覧みたいな表が箱だと思ってもらい、その箱の中にはプロパティという個々のコンピューターが持っている情報があるので、そのプロパティを必要な分だけ指定して、箱から取り出して綺麗に並び替えて表示してあげるようなイメージになります。

 

 

以下の記事も参考いただけると幸いです。

 

 

 

 

まとめ

 

 

以上になります。パイプラインについてはご理解いただけましたでしょうか。

 

 

パイプラインは難しくなく、色んなサンプルスクリプトを見てゆけば理解ができるようになります。ただしオブジェクトというキーワードがここで出てきましたので、オブジェクトについてよく理解するほうが PowerShell を学習する上では非常に重要になります。

 

 

では最後までお読みいただきありがとうございました!

 

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-PowerShell
-


Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637