Подключиться к виртуальной машине Windows через PowerShell
В образах всех версий и редакций операционной системы Windows, подготовленных для запуска в Yandex Cloud, включен PowerShell Remoting Protocol (PSRP) с доступом по HTTPS. Вы сможете подключиться к виртуальной машине в статусе RUNNING
по протоколу PSRP. Для инициализации всех служб после запуска ВМ может потребоваться время. Если возникла ошибка соединения, попробуйте снова через несколько минут.
Группы безопасности виртуальной машины должны разрешать входящий трафик по протоколу TCP на порт 5986.
Для подключения по протоколу PSRP укажите публичный IP-адрес или полностью определенное доменное имя (Fully Qualified Domain Name, FQDN
Чтобы подключиться к ВМ:
-
Откройте консоль PowerShell.
-
Создайте объект
Credentials
, заменив<пароль>
паролем пользователяAdministrator
, который вы указали при создании ВМ:$myUserName = "Administrator" $myPlainTextPassword = "<пароль>" $myPassword = $MyPlainTextPassword | ConvertTo-SecureString -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($MyUserName, $myPassword)
-
Убедитесь, что имя пользователя и пароль в объекте верны:
$networkCredential = $credential.GetNetworkCredential() $networkCredential | Select-Object UserName, Password
Результат:
UserName Password -------- -------- Administrator <пароль>
-
Создайте переменную для IP-адреса ВМ:
$ipAddress = "<IP-адрес>"
-
Создайте объект
SessionOption
. В объекте укажите проверки, которые нужно пропустить:$sessionOption = New-PSSessionOption ` -SkipCACheck ` -SkipCNCheck ` -SkipRevocationCheck
-
Подключитесь к интерактивной сессии:
$psSession = @{ ComputerName = $ipAddress UseSSL = $true Credential = $credential SessionOption = $sessionOption } Enter-PSSession @psSession
Результат:
[<IP-адрес>]: PS C:\Users\$myUserName\Documents>
Завершите сессию:
Exit-PSSession
-
Создайте сессию для неинтерактивного выполнения команд:
$session = New-PSSession @psSession
Просмотрите список открытых сессий:
Get-PSSession
Результат:
Id Name ComputerName ComputerType State ConfigurationName Availability -- ---- ------------ ------------ ----- ----------------- ------------ 2 WinRM2 <IP-адрес> RemoteMachine Opened Microsoft.PowerShell Available
Выполните команду на удаленной машине:
$scriptBlock = { Get-Process } $invokeCommand = @{ ScriptBlock = $scriptBlock Session = $session } Invoke-Command @invokeCommand
Результат:
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName PSComputerName ------- ------ ----- ----- ------ -- -- ----------- -------------- 249 13 4248 16200 0.11 4176 2 conhost <IP-адрес> 283 12 1888 4220 0.20 420 0 csrss <IP-адрес> ...