2017-08-09 221 views
1

下面我有一個命令連接到遠程計算機,並做動作:獲取調用命令的狀態

$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

爲了讓你的try catch工作,你可能需要在你的'Invoke-Command'中添加'-ErrorAction Stop'。 –

回答

3

有很多方法。但在PowerShell中,Invoke-Command背後的想法是指定的腳本塊以與本地腳本相同的方式執行。所以,你可以做這樣的:

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

Write-Error產生異常,因爲的ErrorActionStop。通過會話傳輸異常,然後您可以捕獲它。

+0

上面是它,你需要把你的錯誤'報告'在scriptblock內,它會「冒泡」到你的try/catch。 – Paolis

+0

謝謝,它的工作 – sunny