2016-07-11 14 views
0

私はこのような変数にデータの特定の選択を追加したい:ませ方法が見つかりませんでした「op_addition」

$a = Get-Service | select -First 10 | ? Name -Like "App*" 
$collection = $null 
foreach($item in $a){ 
    if($item.Status -like "Running"){ 
    $collection = $collection + $item 
    } 
} 

私のようなエラーまし実行しようとしている:見つけ

ない方法を"op_addition"

私の選択を別の変数に保存するにはどうすればよいですか?

答えて

2

まず、$collection$nullである。

$collectionは、$null + $objectが単なる$objectであるため、最初のループ反復後にServiceControllerオブジェクトです。

2番目のループの繰り返しでは、ServiceControllerにエラーが通知されるのと同じように+のオーバーロードがないため、エラーが発生します。

あなたは、彼らは道あなたが期待する動作するように+ため$collection実際のコレクション(あなたが@()配列部分式の演算子を使用することができます)を宣言する必要があります:直接ループからすべての出力を割り当て、

$a = Get-Service | select -First 10 | ? Name -Like "App*" 
$collection = @() 
foreach($item in $a){ 
    if($item.Status -like "Running"){ 
    $collection = $collection + $item 
    } 
} 

代わりに$collectionへ:もちろん、パイプライン内の単一Where-Object文で簡単にすることができ

$a = Get-Service | select -First 10 | ? Name -Like "App*" 
$collection = foreach($item in $a){ 
    if($item.Status -like "Running"){ 
    $item 
    } 
} 

$collection = Get-Service App* |Where-Object {$_.Status -eq 'Running'} 
+0

ありがとうございました! '$ collection = $ null'を' $ collection = @() 'に切り替えると、もうエラーメッセージは表示されません。残念ながら変数 '$ collection'には内容がありません...あなたはなぜアイデアを持っていますか? –

+1

「Get-Service」によって返された最初の10のサービスには、実行中のApp *という名前のサービスが少なくとも1つ含まれていることが分かります。 –

+0

私のゴッシュ!私はばかな間違いをした。 GUIを使って作業し、すべてがうまくいればポップアップをチェックする。ここでは、コレクションはポップアップに表示されないので、変数は空であると考えました。すべてが機能しています、もう一度ありがとう! –

関連する問題