2017-08-25 3 views
0

私はリスト内のすべてのコンピュータに入力しようとしており、そこからソフトウェアを削除しようとしています。Enter-PSSessionが変数を返さない

私はコードを(foreachを使用していない)しようとすると、コードは正常に動作します。しかし、私はそれをループしようとすると、全く動作しません。

"何か"がある場合、何もしません。例えば、私が実行しようとしました:

$product = Get-WmiObject -Class Win32_Product | Where-Object {$_.name -like "7-zip*"} 

次の行では、画面上の$product変数を印刷します。しかし、それは常に空です。

手動でpssessionと入力してこのコマンドを実行すると、何かが返されます。

私はここで間違っていますか?私はすでにこれを理解しようとしている時間を無駄にしませんが、運:(

foreach ($computer in $computers){ 

    if(Test-Connection "$computer" -Count 1 -ErrorAction SilentlyContinue){ 

     Enter-PSSession -ComputerName $computer 

     "do something" 

     Exit-PSSession 

    }else{ 

     Write-Warning "computer is offline." 

    } 
} 
+2

https://stackoverflow.com/questions/3705321/enter-pssession私のPowerShellのスクリプトでは、PSSessionは対話的に使用するためのものではありません。 – Raziel

答えて

1

使用して起動し、コマンドを 例:

$ReturnValue = Invoke-Command -ComputerName $ComputerName -ScriptBlock{ 
    #DoSomethingHere 
} 
Write-host $Returnvalue #Will print the output of the scriptblock 
+0

ああ、それは素晴らしい!それは今働いた!ありがとう! – mergulhao21

関連する問題