PowerShell远程处理 - 调用命令不返回输出

时间:2017-04-19 13:01:45

标签: powershell remoting invoke-command

我在管理员模式下从PowerShell远程运行以下命令。这将从远程计算机获取App Pool(在IIS中)的状态。

$result = Invoke-Command -ComputerName $servername -ScriptBlock {
    param($appPoolName) 
    Get-WebAppPoolState -Name $appPoolName
} -ArgumentList $appPoolName | select value

如果我传递正确的值,我会在$result中获取正确的数据,但如果我传递的服务器名称无效,则会收到以下错误。

  

"连接到远程服务器失败,并显示以下错误消息:WinRM无法处理请求。"

问题是我在$result中没有得到任何内容,即使这不是Catch块。无法确定命令是否成功运行。

请提供有关如何在$ result中获取命令输出的任何指示。

注意:我是远程计算机上的管理员,并且已启用WinRM。

2 个答案:

答案 0 :(得分:1)

为了捕获错误,它需要终止。您可以使用-ErrorAction Stop强制执行此操作。

try {
    $result = Invoke-Command -ComputerName $servername -ScriptBlock {
        param($appPoolName) 
        Get-WebAppPoolState -Name $appPoolName
    } -ArgumentList $appPoolName -ErrorAction Stop | select value
}
catch {
    $result = [pscustomobject]@{"value"="Not Found"}
}

答案 1 :(得分:1)

添加-ErrorAction Stop并尝试使用try / catch捕获错误,并使用$error[0]显示上一个错误

Try{
    $result = Invoke-Command -ComputerName $servername -ErrorAction Stop -ScriptBlock {
        param($appPoolName) 
        Get-WebAppPoolState -Name $appPoolName
    } -ArgumentList $appPoolName | Select-Object value
}
Catch{
    $result = $error[0]
}