测试 Enter-PSSession 是否成功

测试 Enter-PSSession 是否成功

有没有办法测试 Enter-PSSession 是否成功或 Enable-Remoting 是否已为真?我不需要能够进入机器本身,只需要找到一种方法来找出返回代码。基本上,只是检查是否可以远程进入机器,或者机器是否仍需要启用远程功能。

答案1

Enter-PSSession仅供交互使用。

要测试远程处理是否已启用,请使用New-PSSession

$testSession = New-PSSession -Computer $targetComputer
if(-not($testSession))
{
    Write-Warning "$targetComputer inaccessible!"
}
else
{
    Write-Host "Great! $targetComputer is accessible!"
    Remove-PSSession $testSession
}

如果成功,New-PSSession将返回新的 PSSession 对象 - 如果失败,它将不会返回任何内容,并且$testSession$null因此-not($testSession) -eq $true

答案2

您还可以使用

 Test-WSMan computername

或通过身份验证:

 Test-WSMan myserver -Credential peter -Authentication Negotiate

然后检查返回对象。

如果可行的话,PSSession 也应该可以工作。

答案3

function CanRemote {
    $session = New-PSSession $ComputerName -ErrorAction SilentlyContinue

    if ($session -is [System.Management.Automation.Runspaces.PSSession])
        {Write-Host "Remote test succeeded: $ComputerName."}
    else
        {Write-Host "Remote test failed: $ComputerName."}
}

答案4

如果您使用 Try 块,则只需添加 -ErrorAction Stop

Try{
   $session = New-PSSession $ComputerName -ErrorAction Stop
}
Catch {
   We got error..
}

相关内容