1

コマンドのリストを取得してリモートマシンで実行するPowerShellスクリプトを作成しようとしていますが、次のコードがあります。

foreach($command in $commands)
{
  Invoke-Command -computer "BNEBAK" -scriptblock{"$command"}
}

これはエラーをスローしませんが、実際にはコマンドを実行しません(たとえば、stop-service servicename)。$ messagesは、スクリプトが呼び出されたときに引数として渡されたテキストファイルから読み込まれます。しばらくの間、Invoke-Expressionでローカルコマンドを実行するために使用しているため、このスクリプトの残りの部分が機能することはわかっています。

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

3

正しいコードは次のようになります

$commands = @(get-content com.txt)
for($command in $commands) { 
  $scriptblock = $ExecutionContext.InvokeCommand.NewScriptBlock($command) 
  Invoke-Command -computer $computer -scriptblock $scriptblock 
}
于 2010-08-17T01:26:42.193 に答える