获取Invoke-Command的状态

时间:2017-08-09 13:37:23

标签: powershell

我在下面有一个命令连接到远程计算机并执行操作:

$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"
}

1 个答案:

答案 0 :(得分:3)

有很多方法。但是在PowerShell中Invoke-Command背后的想法是指定的脚本块以与本地脚本相同的方式执行。所以,你可以这样做:

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

Stop会生成例外。通过会话传输异常,然后就可以捕获它。