2012-04-09 21 views
8

コマンドレットを実行し、結果にの値を変数に格納します。Powershellの変数にコマンドレットの結果値を格納します。

C:\PS>Get-WSManInstance -enumerate wmicimv2/win32_process | select Priority 

ことがヘッダと優先順位を示しています。最初の例は次のとおりです。

Priority 
-------- 
8 

どのように変数に格納できますか?私が試した:@{Priority=8}と私はそれが8になりたかった:

$var=Get-WSManInstance -enumerate wmicimv2/win32_process | select Priority 

は今変数です。

質問2:

1つのコマンドレットで2つの変数を格納できますか?私はパイプラインの後にそれを保存することを意味します。

C:\PS>Get-WSManInstance -enumerate wmicimv2/win32_process | select Priority, ProcessID 

私はこれを避けたい:あなたにできること

注:

$prio=Get-WSManInstance -enumerate wmicimv2/win32_process | select Priority 
$pid=Get-WSManInstance -enumerate wmicimv2/win32_process | select ProcessID 

答えて

19

Select-Object

$var=Get-WSManInstance -enumerate wmicimv2/win32_process | select -expand Priority 

-ExpandPropertyフラグ更新他の質問に答えるために使用しますよくプロパティにアクセスしてください:

$var=(Get-WSManInstance -enumerate wmicimv2/win32_process).Priority 

ので、変数にこれらの倍数を取得するには:

$var = (Get-WSManInstance -enumerate wmicimv2/win32_process).Priority 

Get-WSManInstance場合(これは動作しません。

$var=Get-WSManInstance -enumerate wmicimv2/win32_process 
    $prio = $var.Priority 
    $pid = $var.ProcessID 
+0

それは非常に有用です、ありがとう – Lgn

+0

私の質問2を見てみることができますか? – Lgn

+1

@Lgn - 更新されました。 – manojlds

2

は、単にオブジェクトのPriorityプロパティは、パイプラインから返さアクセス複数のオブジェクトを返します。2番目の質問については)

:2つのプロパティを取得するためのいくつかのオプションがあり、problably最も簡単なものは変数を持っていることです* 2つの別々のプロパティを持つオブジェクト含む:

$var = (Get-WSManInstance -enumerate wmicimv2/win32_process | select -first 1 Priority, ProcessID) 

をし、

$var.Priority 

:1つのだけのプロセスを仮定すると、使用

複数のプロセスがある場合$varは(それが常に収集ある配列リテラル構文@(...)を使用して)ので、最初のプロセスのプロパティを取得するために、あなたはインデックスをすることができます配列になります。

$var = @(Get-WSManInstance -enumerate wmicimv2/win32_process | select -first 1 Priority, ProcessID) 
その後、

と使用:

$var[0].Priority 
$var[0].ProcessID 

親切コマンドライン用ではなく、それほど親切スクリプトでPowerShellは、いくつかの余分なロジックを持っていますパイプラインの結果を変数に代入する:オブジェクトが返されない場合は、$nullを返し、それが返された場合はそのオブジェクトが割り当てられます。そうでない場合は配列が割り当てられます。配列を強制すると、0個、1個以上の(それぞれ)要素を持つ配列が返されます。

この変更はPowerShell V3(リリース候補の作成時点)では、オブジェクトの配列のメンバープロパティを使用すると、それらのプロパティの値の配列が返されます。

関連する問題