0

私は以下のスクリプトを持っていますが、それは私が望むようには機能していません。最初に、メインの Powershell ウィンドウがフリーズしないように、バックグラウンドで「Start-Job」を使用する関数に install.cmd を渡したいと思います。しかし、install.cmd を呼び出すことができません。

$Appname = @("Adobe_FlashPlayer", "Acrobat_Reader", "Microsoft_RDP")

function BatchJob{

    Param (
        [ScriptBlock]$batchScript,
        $ArgumentList = $null)
    #Start the batch
    $batch = Start-Job -ScriptBlock $batchScript -ArgumentList $ArgumentList

}

Foreach($App in $Appname){
    $Install = "C:\test\$App\Install.cmd"
    Batchjob -batchscript {Invoke-Command (cmd / c)} -ArgumentList $install     
    Wait-Job $job
    Receive-Job $job
}
4

1 に答える 1

1

私はあなたがそれを(少し)やり過ぎたと信じています。これは機能します:

$Appname = @("Adobe_FlashPlayer", "Acrobat_Reader")

Foreach($App in $Appname){
    $Install = "C:\test\$App\Install.cmd"
    $job = Start-Job ([scriptblock]::create("cmd /C $Install"))
    Wait-Job $job
    Receive-Job $job
}

*救助へのmjolinor:https://stackoverflow.com/a/25020293/4593649

また、このバリエーションは正常に機能します。

$Appname = @("Adobe_FlashPlayer", "Acrobat_Reader")

Foreach($App in $Appname){
    $Install = "C:\test\$App\Install.cmd"
    $scriptBlock = ([scriptblock]::create("cmd /C $Install"))
    $job = Start-Job $scriptBlock
    Wait-Job $job
    Receive-Job $job
}

PShell ver4でテスト済み。乾杯!

于 2015-04-12T01:55:29.517 に答える