PowerShell vs PowerShell Direct

May 23, 2019 08:48

Оказывается в Windows 2016/10 и старше, есть 2 вида powershell для работы с Hyper-V VM: тот, который вызывается стандартно и требует для работы активации WinRM (enable PSRemote) и запускается командой New-PSSession

[Пример]$cred=Get-Credential
$sess = New-PSSession -Credential $cred -ComputerName my.remotemachine.name
Enter-PSSession $sess
...Run commands in remote session...
Exit-PSSession
Remove-PSSession $sess


и есть т.н. PowerShell Direct, который можно запустить только локально с того хоста, на котором запущена VM, обладая при этом правами Hyper-V administrator и учетной записью, имеющей права локального входа на VM OS. PSD не требует активации (или открытия портов на FW) WinRM и запускается по команде Enter-PSSession -VMName VM_Name (Exit-PSSession).
Можно даже запускать любые скрипты на VM через Invoke-Command -VMName VM_Name (-FilePath / -ScriptBlock)

Это очень удобно, если ты, по дурости, удалил всех пользователей из группы Remote Desktop Users, включая локального админа, или каким-то образом деактивировал/сломал сервис RDP, потому как стандартный способ доступа к VM, даже с локального Hyper-V host, даже если на VM установлена Windows Server Core без GUI, - это именно RDP. Да-да, я тоже несколько лет назад удивилась, когда захотела подключиться к server core, и увидела, что мне открылся минималистический rdp, в котором висело одинокое GUI-шное окно cmd.exe, а не просто терминал, из которого можно запустить X-оболочку, как можно было бы ожидать, имея опыт работы с Unix-системами.

Гы, видимо, не у одной меня была такая проблема с потерей доступа к серверам, раз добавили эту PSD-фичу :)

PS Правда, не знаю, будет ли это работать, если VM дополнительно защищена по технологии Shielded VM, так что нужно семь раз проверить все GPO, прежде чем активировать Host Guardian Service.

howto, ms

Previous post Next post
Up