Есть ли способ проверить, является ли Enter-PSSession успешным или Enable-Remoting уже верно? Мне не нужно иметь возможность попасть в саму машину, просто чтобы узнать код возврата. По сути, это просто проверка того, можно ли выполнить удаленное взаимодействие с машиной или все еще требуется, чтобы удаленное взаимодействие было включено.
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
)
Вы также можете использовать
Test-WSMan computername
или с аутентификацией:
Test-WSMan myserver -Credential peter -Authentication Negotiate
а затем проверьте возвращаемый объект.
Если это работает, PSSession также должен работать.
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."}
}
Если вы используете блок Try, просто добавьте -ErrorAction Stop
Try{
$session = New-PSSession $ComputerName -ErrorAction Stop
}
Catch {
We got error..
}