2017-08-09 12 views
1

私は、リモートコンピュータに接続して、アクションを行うには、以下のコマンドを持っている:Invoke-Commandコマンドのステータスを取得

$myfile = [System.IO.File]::ReadAllBytes("C:\temp\test.txt") 
$session = $null 
$session = New-PSSession -computerName $server -credential $user 
Invoke-Command -Session $session -ArgumentList $myfile -ScriptBlock {[System.IO.File]::WriteAllBytes("C:\temp\test.txt", $args)} 

をしかし、私はステータスを取得する方法を私は、プロセスのステータスを取得するために苦労していますInvoke-Command

私は以下のように試してみましたが、それは働いていない:

try { 
    Invoke-Command -Session $session -ArgumentList $myfile -ScriptBlock {[System.IO.File]::WriteAllBytes("C:\temp\abc\Bank_Wiz_copy2.txt", $args)} 
    $Stat = "Success" 
} 
catch { 
    $Stat = "Failed" 
} 
+0

キャッチしようとすると、おそらく '-ErrorAction Stop'を' Invoke-Command'に追加する必要があります。 –

答えて

3

多くの方法があります。しかし、PowerShellではInvoke-Commandの背後にある考え方は、指定されたスクリプトブロックがローカルスクリプトと同じ方法で実行されます。だから、あなたはそのようにそれを行うことができます。

try { Invoke-Command -Session $session -ScriptBlock { Write-Error "err" } -ErrorAction Stop } catch { Write-Host "!" } 

Write-ErrorがあるためErrorActionの例外を発生さStopです。例外はセッションで送信され、それを捕まえることができます。

+0

上記のとおり、あなたはあなたのエラーを「報告する」スクリプトブロック内に置く必要があり、それはあなたのtry/catchに "バブルアップ"します。 – Paolis

+0

ありがとうございます、その作業 – sunny

関連する問題