2017-10-09 91 views
1

我有以下脚本:PowerShell脚本 - 检查退出代码

foreach ($server in $ProductList.$SelectedServer) { 
    Invoke-Command -ComputerName $server -Credential domain\user -ScriptBlock { 
     Import-Module WebAdministration 
     echo "restarting AppPool $args[0] ... on $args[1]" 
     Restart-WebAppPool -Name $args[0] -ErrorAction Stop 
     echo "Restarted WebApp $args[0] on $args[1]" 
    } 
} -ArgumentList $SelectedAppPool, $Server 

我想检查Restart-WebAppPool命令成功执行。如果是这样,我回应'它工作'其他回声'它没有工作'。

目标是提供简单的简单英文消息,而不是典型的未处理的异常。

+0

您发布不可能工作代码所引发的显示。 'foreach'循环没有参数'-ArgumentList'。 –

+0

@AnsgarWiechers是不得不将它移动到Invoke-Command部分。感谢那 – joebegborg07

回答

2

从理论上讲,你大部分都是在那里,我不知道在什么情况下Restart-WebAppPool引发了终止错误,但为了对它们做任何事情,你需要尝试/ catch块:

try { 
    Restart-WebAppPool -Name $args[0] -ErrorAction stop 
    Write-Host "It worked" 
} catch { 
    Write-Host "It did not work" 
    # Error handling goes here. 
} 

的“它的工作”输出将只如果没有终止错误是由Restart-WebAppPool

+2

添加到这@Joe,你可能想发送一个PSCredential对象,而不仅仅是一个用户名作为参数-Credential。否则,在for循环中,您必须多次输入密码才能迭代。 –

+1

谢谢@Windos。那就是诀窍。只是为了澄清。 try/catch是否真的在try段落中执行代码块?或者它只是试试/干运行? – joebegborg07

+1

@ joebegborg07它实际上执行它,但一旦它运行到一个终止错误,它会停止,并直接跳到catch块(因此,如果出现错误,你不会看到“它工作”。) – Windos

相关问题