「set-variable」の使い方

パイプでコマンドを繋いだときに「set-variable」は便利です。

特定条件のオブジェクトを変数に設定する

MSH> get-process w* | set-variable W_Processes
  • 「get-process」コマンドでWで始まるプロセスを取得し、W_Processes変数に設定します。
MSH>  $W_Processes

Name                           Value
----                           -----
W_Processes                    {winlogon, wscntfy}
  • 「W_Processes」変数にはWで始まるプロセスが配列として設定されています。

コマンドの戻り値の調べ方

ちなみに、「get-process」コマンドの戻り値の型は「System.Diagnostics.Process」です。

MSH>  get-process -?
(中略)
RETURN TYPE
    System.Diagnostics.Process
        no description
(続く)

オブジェクト配列を順に処理する

オブジェクト配列を処理するには、foreachが便利です。

MSH> foreach ($W_Process in $W_Processes) { $W_Process.MainModule }

      Size ModuleName             FileName
      ---- ----------             --------
       500 winlogon.exe           \??\C:\WINDOWS\system32\winlogon.exe
        24 wscntfy.exe            C:\WINDOWS\system32\wscntfy.exe
  • ここでは「$W_Processes」の要素変数(System.Diagnostics.Process)を「$W_Process」に取得し、MainModuleプロパティを表示しています。