PowerShell Direct -це новий функціонал PowerShell в Windows Server 2016 і Windows 10, що дозволяє створити пряму локальну PowerShell сесію з будь віртуальною машиною, запущеної на хості Hyper-V, причому підключення йде не через мережу, а через внутрішню шину VM bus. Таким чином, адміністратор Hyper-V може здійснювати управління ВМ за допомогою PowerShell навіть на ізольованій системі без віртуальних мережевих адаптерів.
Основні вимоги для використання Powershell Direct:
- Як хостовой ОС Hyper-V може використовуватися Windows Server 2016 або Windows 10
- Гостьова ВМ повинна бути запущена на тому ж хості Hyper-V, з якого здійснюється підключення (тобто підключення локальне)
- Гостьова ОС віртуальної машини також повинна бути Windows Server 2016 / Windows 10
- На хості Hyper-V консоль Powershell повинна бути запущена з-під адміністратора
- Для підключення до гостьової ОС віртуальної машини потрібно буде вказати ім'я користувача і пароль облікового запису цієї ВМ
Раніше адміністратор міг виконувати команди на віртуальній машині в Hyper-V тільки по мережі за допомогою Invoke-Command або Enter-PSSession. Як параметр для підключення до віддаленої ВМ потрібно вказувати її ім'я мережі (-ComputerName).
Наприклад, отримати список запущених процесів на віддаленому сервері можна так:Invoke-Command -ComputerName WS16-Core -ScriptBlock Get-Process
Або створити нову інтерактивну PS сесію з віддаленим сервером:Enter-PSSession -ComputerName WS16-Core
У такому сценарії PS сесію не можна було встановити з ВМ, відключеною від віртуального комутатора, що знаходиться в ізольованій або захищеною файрволом системі. Все управління здійснюється тільки через графічну консоль Hyper-V.
Для підключення до такої гостьовий ВМ за допомогою Powershell Direct використовується не мережеве ім'я гостьової ОС, а ім'я або GUID ВМ в середовищі Hyper-V. При підключенні через Powershell Direct також можна використовувати Enter-PSSession для створення інтерактивного сеансу Powershell, або Invoke-Command для запуску однієї команди або скрипта.
- Отримаємо список ВМ на хості Hyper-V:
Get-VM | Select Name
- Запустимо інтерактивну PowerShell сесію:
Enter-PSSession -VMName "win10 Compact PSDirect" -Credential (Get-Credential)
- Для завершення сесії виконайте:
Exit-PSSession
Для запуску однієї команди або скрипта скористаємося Invoke-Command:
Invoke-Command -VMId -FilePath C: \ script \ some_script.ps1
Наприклад, якщо вам потрібно скопіювати якийсь файл на ізольовану ВМ через Powershell Direct, скористайтеся таким сценарієм.
Створимо нову сесію PSSession1:
$ PSSession1 = New-PSSession -VMId -Credential (Get-Credential)
Скопіюємо файл на віртуальну машину:
Copy-Item -ToSession $ PSSession1 -Path C: \ win10.iso -Destination D: \ ISO \
Скопіюємо файл з ВМ:
Copy-Item -FromSession $ PSSession1 -Path C: \ result_ data.txt -Destination C: \ vm_data \
Як ви бачите, використовувати Powershell Direct досить просто і зручно. Як і більшість інших нововведень в Windows Server 2016, Powershell Direct орієнтований в першу чергу на поліпшення функціоналу системи з точки зору сервісних / хмарних провайдерів, що надають сервіс віртуальних машин.