有没有办法测试 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..
}