Управління віртуальними машинами windows за допомогою powershell direct, microsoft docs

В цій статті

За допомогою PowerShell Direct можна запускати довільний код PowerShell на віртуальній машині з Windows10 або Windows Server Technical Preview з вузла Hyper-V незалежно від конфігурації мережі і параметрів віддаленого управління.

Запустити PowerShell Direct можна різними способами:

вимоги

Вимоги до операційної системи:

  • Вузол: Windows10, Windows Server Technical Preview2 або більш пізньої версії з Hyper-V.
  • Гість / віртуальна машина: Windows10, Windows Server Technical Preview2 або більш пізньої версії.

Якщо ви керуєте віртуальними машинами більш ранніх версій, використовуйте засіб "Підключення до віртуальної машини" (VMConnect) або налаштуйте для цієї машини віртуальну мережу.

Вимоги до конфігурації:

  • Віртуальна машина повинна працювати на вузлі локально.
  • Віртуальна машина повинна бути включена і мати хоча б один налаштований профіль користувача.
  • Необхідно увійти в обліковий запис адміністратора Hyper-V на хост-комп'ютері.
  • Необхідно вказати дійсні облікові дані користувача для віртуальної машини.

Створення та завершення інтерактивного сеансу PowerShell

Для виконання команд PowerShell на віртуальній машині найпростіше запустити інтерактивний сеанс.

При запуску сеансу вводяться команди виконуються на віртуальній машині, як якщо б ви вводили їх безпосередньо в сеансі PowerShell на самій віртуальній машині.

Запуск інтерактивного сеансу:

На вузлі Hyper-V відкрийте PowerShell від імені адміністратора.

Виконайте одну з наведених нижче команд, щоб створити інтерактивну сесію використовуючи ім'я або GUID віртуальної машини:

Вкажіть облікові дані для віртуальної машини коли це буде запропоновано.

Виконайте команди на віртуальній машині.

Для вашої командного рядка PowerShell повинен відображатися префікс VMName, як показано нижче:

Будь-яка виконана команда виконується на віртуальній машині. Для перевірки можна виконати ipconfig або hostname. щоб переконатися, що ці команди виконуються на віртуальній машині.

Після завершення роботи виконайте наступну команду, щоб закрити сеанс:

Примітка. Якщо сеанс не вдалося підключитися, див. Діагностика для визначення можливих причин.

Додаткові відомості про ці Командлети см. В розділах Enter-PSSession і Exit-PSSession.

Запуск сценарію або команди за допомогою командлета Invoke-Command

PowerShell Direct з Invoke-Command ідеально підходить для ситуацій, коли потрібно виконати одну команду або один сценарій на віртуальній машині, після чого можна припинити взаємодію з віртуальною машиною.

Запуск однієї команди:

На вузлі Hyper-V відкрийте PowerShell від імені адміністратора.

Виконайте одну з наведених нижче команд, щоб створити сеанс, використовуючи ім'я або GUID віртуальної машини:

Вкажіть облікові дані для віртуальної машини коли це буде запропоновано.

Команда виконується на віртуальній машині. При наявності вихідних даних вони виводяться на вашу консоль. Підключення буде закрита автоматично відразу після запуску команди.

На вузлі Hyper-V відкрийте PowerShell від імені адміністратора.

Виконайте одну з наведених нижче команд, щоб створити сеанс, використовуючи ім'я або GUID віртуальної машини:

Вкажіть облікові дані для віртуальної машини коли це буде запропоновано.

Сценарій виконується на віртуальній машині. Підключення буде закрита автоматично відразу після запуску команди.

Додаткові відомості про це Командлети см. В статті Invoke-Command.

Примітка. У збірках Windows 14280 і пізніших версій PowerShell Direct підтримує тільки постійні сеанси.

Постійні сеанси PowerShell надзвичайно корисні при написанні сценаріїв, які координують дії для одного або декількох віддалених комп'ютерів. Після створення постійні сеанси виконуються у фоновому режимі, поки ви не вирішите видалити їх. Це означає, що можна знову і знову посилатися на один і той же сеанс за допомогою Invoke-Command або Enter-PSSession без передачі облікових даних.

На вузлі Hyper-V відкрийте PowerShell від імені адміністратора.

Виконайте одну з наведених нижче команд, щоб створити постійний сеанс PowerShell для віртуальної машини за допомогою New-PSSession.

Вкажіть облікові дані для віртуальної машини коли це буде запропоновано.

попередження:
У збірках, що передують 14500, є помилка. Якщо облікові дані не вказані явно за допомогою прапора -Credential. служба у гостя завершується зі збоєм і буде потрібно перезапустити її. Якщо ви зіткнулися з цією проблемою, інструкції по її усуненню см. Тут.

Скопіюйте файл на віртуальну машину.

Щоб скопіювати C: \ host_path \ data.txt на віртуальну машину з хост-комп'ютера, виконайте наступну команду:

Скопіюйте файл з віртуальної машини (на вузол).

Щоб скопіювати C: \ guest_path \ data.txt на вузол з віртуальної машини, виконайте наступну команду:

Зупиніть постійний сеанс за допомогою Remove-PSSession.

діагностика

У PowerShell Direct виводиться невеликий набір повідомлень про найпоширеніші помилки. Нижче наведені найбільш поширені помилки, можливі причини та засоби діагностики.

Параметри -VMName або -VMID не існує

Проблема.
Enter-PSSession. Invoke-Command або New-PSSession не мають параметр -VMName або -VMId.

Можливі причини:
Швидше за все, проблема полягає в тому, що PowerShell Direct не підтримується системою сервера віртуальних машин.

Перевірити збірку Windows можна за допомогою наступної команди:

Якщо застосовується підтримувана збірка, можливо, ваша версія PowerShell не використовує PowerShell Direct. Для PowerShell Direct і JEA потрібно основний номер версіі5 або вище.

Перевірити версію PowerShell можна за допомогою наступної команди:

Помилка: "Можливо, віддалений сеанс був завершений"

Примітка.
Для Enter-PSSession в збірках вузла з 10240 по 12400 всі описані нижче помилки реєструються як "Можливо, віддалений сеанс був завершений".

Повідомлення про помилку:

  • Віртуальна машина існує, але не виконується.
  • Гостьова ОС не підтримує PowerShell Direct (див. Вимоги).
  • Оболонка PowerShell ще не доступна на гостьовий віртуальної машині.
    • Завантаження операційної системи не завершена.
    • Правильна завантаження операційної системи неможлива.
    • Під час завантаження потрібне введення даних користувачем.

Можна використовувати командлет Get-VM. щоб дізнатися, які віртуальні машини виконуються на вузлі.

Повідомлення про помилку:

  • Одна із зазначених вище причин- вони все в рівній мірі застосовні для New-PSSession
  • Помилка в поточних збірках, коли потрібно явна передача облікових даних за допомогою -Credential. Коли це відбувається, в операційній системі на віртуальній машині зависає вся служба і її потрібно перезапустити. Доступність сеансу можна перевірити за допомогою Enter-PSSession.

Щоб обійти цю проблему з обліковими даними, увійдіть віртуальну машину за допомогою VMConnect, відкрийте PowerShell і перезапустіть службу vmicvmsession, використовуючи наступну команду PowerShell:

Помилка: набір параметрів не може бути дозволений

Повідомлення про помилку:

-RunAsAdministrator не підтримує при підключенні до віртуальних машин.

Прапор -RunAsAdministrator дозволяє адміністратору підключитися до контейнера Windows без явної вказівки облікових даних. Оскільки віртуальні машини не надають неявний доступ адміністратора до вузла, в цьому випадку необхідно явно надати облікові дані.

Можна передати облікові дані адміністратора на віртуальну машину за допомогою параметра -Credential або вручну при надходженні запиту.

Помилка. Неприпустимі облікові дані.

Повідомлення про помилку:

  • Неможливо перевірити облікові дані для гостьової віртуальної машини.
    • Надано неправильні облікові дані.
    • Облікові записи користувачів відсутні на гостьовий віртуальної машині (операційна система не завантажувалася)
    • У разі підключення від імені адміністратора: адміністратор не був встановлений як активний користувач. Додаткові відомості див. Тут.

Помилка. Вхідний параметр VMName забороняється ні в одну віртуальну машину.

Повідомлення про помилку:

  • Ви не є адміністратором Hyper-V.
  • Віртуальна машина не існує.

Приклади і керівництва користувача

PowerShell Direct підтримує JEA (Just Enough Administration). Щоб оцінити цю функцію, скористайтеся цим керівництвом користувача.

Див. Приклади на веб-сайті GitHub.

Схожі статті