Назад | Перейти на главную страницу

Проверка успешности Enter-PSSession

Есть ли способ проверить, является ли 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..
}