Подключиться к виртуальной машине Windows через PowerShell
В образах всех версий и редакций операционной системы Windows, подготовленных для запуска в Yandex Cloud, включен PowerShell Remoting Protocol (PSRP) с доступом по HTTPS. Вы сможете подключиться к виртуальной машине в статусе RUNNING
по протоколу PSRP. Для инициализации всех служб после запуска ВМ может потребоваться время. Если возникла ошибка соединения, попробуйте снова через несколько минут.
Группы безопасности виртуальной машины должны разрешать входящий трафик по протоколу TCP на порт 5986.
Примечание
Группы безопасности находятся на стадии Preview. Если они недоступны в вашей сети, для виртуальной машины будет разрешен весь входящий и исходящий трафик, и дополнительной настройки не требуется.
Для подключения по протоколу PSRP укажите публичный IP-адрес или полностью определенное доменное имя (Fully Qualified Domain Name, FQDN). Доступ по FQDN возможен из другой ВМ Yandex Cloud, если она подключена к той же сети. IP-адрес и FQDN можно узнать в консоли управления, в блоке Сеть на странице ВМ.
Чтобы подключиться к ВМ:
-
Откройте консоль PowerShell.
-
Создайте объект
Credentials
, заменив<password>
паролем пользователяAdministrator
, который вы указали при создании ВМ:$myUserName = "Administrator" $myPlainTextPassword = "<password>" $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 <password>
-
Создайте переменную для IP-адреса ВМ:
$ipAddress = "<ip-address>"
-
Создайте объект
SessionOption
. В объекте укажите проверки, которые нужно пропустить:$sessionOption = New-PSSessionOption ` -SkipCACheck ` -SkipCNCheck ` -SkipRevocationCheck
-
Подключитесь к интерактивной сессии:
$psSession = @{ ComputerName = $ipAddress UseSSL = $true Credential = $credential SessionOption = $sessionOption } Enter-PSSession @psSession
Результат выполнения команды:
[<ip-address>]: PS C:\Users\$myUserName\Documents>
Завершите сессию:
Exit-PSSession
-
Создайте сессию для неинтерактивного выполнения команд:
$session = New-PSSession @psSession
Просмотрите список открытых сессий:
Get-PSSession
Результат выполнения:
Id Name ComputerName ComputerType State ConfigurationName Availability -- ---- ------------ ------------ ----- ----------------- ------------ 2 WinRM2 <ip-address> 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-address> 283 12 1888 4220 0.20 420 0 csrss <ip-address> ...