私はここで私の髪を引っ張っている、私はちょうどこれを動作させるように見えることができないので、私はこの問題をGoogleにする方法を把握することはできません。私はPowershell 2.0を実行しています。ここに私のスクリプトがあります:PowershellのInvoke-Commandは-ComputerNameパラメータの変数を取りませんか?
$computer_names = "server1,server2"
Write-Output "Invoke-Command -ComputerName $computer_names -ScriptBlock {
Get-WmiObject -Class Win32_LogicalDisk |
sort deviceid |
Format-Table -AutoSize deviceid, freespace
}"
Invoke-Command -ComputerName $computer_names -ScriptBlock {
Get-WmiObject -Class Win32_LogicalDisk |
sort deviceid |
Format-Table -AutoSize deviceid, freespace
}
最後のコマンドはエラーを与える:
Invoke-Command : One or more computer names is not valid. If you are trying to
pass a Uri, use the -ConnectionUri parameter or pass Uri objects instead of
strings.
しかし、私はシェルへの書き込み出力コマンドの出力をコピーして、それを実行すると、それだけで正常に動作します。文字列変数をInvoke-Commandが受け付けるものにキャストするにはどうすればよいですか?前もって感謝します!
これは、ありがとう!私はそれをそれぞれのために実行するとは思わなかった。それは私が見たことのない略語です。しかし、私はInvoke-Command -ComputerNameが1つを取るとは思わないので、配列の宣言を避けていました。代わりにコンマで区切られたコンピュータ名のリストをスペースなしで取ります。私が間違っている? – erictheavg
自分自身に反応する:それはそうだ。私はちょうどそのコマンドのヘルプを読んで、それは文字列[]を期待していると言います。私は単なる例から離れて、悪い仮定をしていました。 – erictheavg