如何从Catch语句中返回变量的值?

时间:2016-12-22 15:26:19

标签: powershell

我需要测试远程计算机的三种可能状态:联机,无RPC服务器或无响应。当远程联机但RPC服务器不可用时,我使用try-catch块来捕获非终止条件。我理解为什么下面的代码没有返回No RPC Server的状态,但我不知道应该如何继续。非常感谢任何帮助

$Status = ""
$hostname = Read-host("Enter Computer Name")
if (test-connection $hostname -Count 1 -ErrorAction SilentlyContinue){
    $Status = "Online"
    Try {
        $x = gwmi -Class win32_ComputerSystem -ComputerName $hostname -ErrorAction Stop
        }
    Catch{
        $Status = "No RPC"
        Continue
    }
}
Else{
    $Status = "No Response"
}
$Status

1 个答案:

答案 0 :(得分:1)

如果您不需要在该功能中进行任何其他处理,则根本没有理由使用$Status变量。只需在Return "No RPC"块中Catch进行操作(我也会在Else内同样执行此操作以保持一致性,但这完全取决于您的偏好。)