3

私はStart-Jobコマンドレットを初めて使用し、引数を取るコマンドレットを含むスクリプト ブロックを呼び出すのに問題があります。これが私がこれまでに持っているものです:

    Start-Job -ScriptBlock {
       $ServiceObj = Get-Service -Name $ServiceName -ComputerName $Computer -ErrorAction Stop   
       Stop-Service -InputObj $ServiceObj -erroraction stop 
    }

実行するreceive-jobと、-ComputerName引数が null または空であり、-InputObj引数が null または空であるというエラーが表示されます。いずれにしてもそうではありません。上記のスニペットは、2 つの foreach ループ内から呼び出されています。

foreach($Computer in $ComputerNames) {
  foreach($ServiceName in $ServiceNames) {
   #..call snippet above
  }
 }

-ArgumentListスクリプトブロックを呼び出すときに を使用しようとしましたが、運もありません。私は何かが欠けていると確信していますか?

4

1 に答える 1

6

ArgumentList を使用する必要があります (PowerShell V3 を使用している場合を除く) 例:

Start-Job -ScriptBlock {param($ComputerName)
   $ServiceObj = Get-Service -Name $ServiceName -CN $ComputerName -ErrorAction Stop
   Stop-Service -InputObj $ServiceObj -erroraction stop 
} -ArgumentList $Computer

PowerShell V3 を使用している場合は、using変数修飾子を使用できます。

Start-Job -ScriptBlock {
   $ServiceObj = Get-Service -Name $ServiceName -CN $using:Computer -ErrorAction Stop
   Stop-Service -InputObj $ServiceObj -erroraction stop 
}
于 2012-09-24T19:51:51.060 に答える