• Дигитални аксесоари
  • сървър
  • Дигитален живот
  • Политика за поверителност
  • Свържете се с нас
  1. Home
  2. Article
  3. Управлявайте виртуални машини на Windows с PowerShell Direct ...

Управлявайте виртуални машини на Windows с PowerShell Direct ...

Rsdaa 12/02/2022 1848

Автоматизация и управление на виртуална машина с помощта на PowerShell

05/02/20167 минути за четене

В тази статия

Можете да използвате PowerShell Direct, за да стартирате произволен PowerShell във виртуална машина с Windows 10 или Windows Server 2016 от вашия Hyper-V хост, независимо от мрежовата конфигурация или настройки за дистанционно управление.

Ето няколко начина, по които можете да стартирате PowerShell Direct:

Изисквания

Изисквания за операционната система:

Хост: Windows 10, Windows Server 2016 или по-нова версия, изпълняваща Hyper-V.Guest/виртуална машина: Windows 10, Windows Server 2016 или по-нова версия.

Ако управлявате по-стари виртуални машини, използвайте връзка с виртуална машина (VMConnect) или конфигурирайте виртуална мрежа за виртуалната машина.

Изисквания за конфигурация:

Виртуалната машина трябва да работи локално на хоста. Виртуалната машина трябва да е включена и да работи с поне един конфигуриран потребителски профил. Трябва да сте влезли в хост компютъра като Hyper-V администратор. Трябва да предоставите валидни потребителски идентификационни данни за виртуалната машина.

Създайте и излезте от интерактивна PowerShell сесия

Най-лесният начин да изпълните PowerShell команди във виртуална машина е да стартирате интерактивна сесия.

Когато сесията започне, командите, които въвеждате, се изпълняват на виртуалната машина, все едно сте ги въвели директно в сесия на PowerShell на самата виртуална машина.

За да започнете интерактивна сесия:

На хоста Hyper-V отворете PowerShell като администратор.

Изпълнете една от следните команди, за да създадете интерактивна сесия, като използвате името на виртуалната машина или GUID:

Въведете-PSSession -VMName Въведете-PSSession -VMId

Предоставете идентификационни данни за виртуалната машина, когато бъдете подканени.

Изпълнявайте команди на вашата виртуална машина.

Трябва да видите VMName като префикс за подканата на PowerShell, както е показано:

[VMName]: PS C:\>

Всяка стартирана команда ще се изпълнява на вашата виртуална машина. За да тествате, можете да изпълните ipconfig или име на хост, за да се уверите, че тези команди се изпълняват във виртуалната машина.

Когато сте готови, изпълнете следната команда, за да затворите сесията:

Exit-PSSession

Забележка: Ако вашата сесия не се свързва, вижте отстраняването на неизправности за потенциални причини.

За да научите повече за тези командлети, вижте Enter-PSSession и Exit-PSSession.

Изпълнете скрипт или команда с Invoke-Command

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

За да изпълните една команда:

На хоста Hyper-V отворете PowerShell като администратор.

Изпълнете една от следните команди, за да създадете сесия, като използвате името на виртуалната машина или GUID:

Invoke-Command -VMName-ScriptBlock { команда } Invoke-Command -VMId-ScriptBlock { команда }

Предоставете идентификационни данни за виртуалната машина, когато бъдете подканени.

Командата ще се изпълни на виртуалната машина, ако има изход към конзолата, той ще бъде отпечатан на вашата конзола. Връзката ще бъде затворена автоматично веднага щом командата се изпълни.

За да стартирате скрипт:

На хоста Hyper-V отворете PowerShell като администратор.

Изпълнете една от следните команди, за да създадете сесия, като използвате името на виртуалната машина или GUID:

Invoke-Command -VMName-FilePath C:\host\script_path\script.ps1 Invoke-Command -VMId-FilePath C:\host\script_path\script.ps1

Предоставете идентификационни данни за виртуалната машина, когато бъдете подканени.

Скриптът ще се изпълни на виртуалната машина. Връзката ще се затвори автоматично веднага щом командата се изпълни.

За да научите повече за тази кратка команда, вижте Invoke-Command.

Копирайте файлове с New-PSSession и Copy-Item

Забележка: PowerShell Direct поддържа постоянни сесии само в компилации на Windows 14280 и по-нови

Постоянните PowerShell сесии са невероятно полезни при писане на скриптове, които координират действията между една или повече отдалечени машини. Веднъж създадени, постоянните сесии съществуват във фонов режим, докато не решите да ги изтриете. Това означава, че можете да препращате към една и съща сесия отново и отново с Invoke-Command или Enter-PSSession без предаване на идентификационни данни.

По същия начин сесиите поддържат състояние. Тъй като постоянните сесии продължават, всички променливи, създадени в сесия или предадени на сесия, ще бъдат запазени при множество извиквания. Налични са редица инструменти за работа с постоянни сесии. За този пример ще използваме New-PSSession и Copy-Item, за да преместим данни от хост към виртуална машина и от виртуална машина към хост.

За да създадете сесия, след това копирайте файлове:

На хоста Hyper-V отворете PowerShell като администратор.

Изпълнете една от следните команди, за да създадете постоянна PowerShell сесия към виртуалната машина с помощта на New-PSSession.

$s = New-PSSession -VMName-Credential (Get-Credential)$s = New-PSSession -VMId-Credential (Get-Credential)

Предоставете идентификационни данни за виртуалната машина, когато бъдете подканени.

Предупреждение: Има грешка в компилации преди 14500. Ако идентификационните данни не са изрично посочени с -Credential флаг, услугата в госта ще се срине и ще трябва да се рестартира. Ако срещнете този проблем, са налични инструкции за заобиколно решение тук.

Копирайте файл във виртуалната машина.

За да копирате C:\host_path\data.txt във виртуалната машина от хост машината, изпълнете:

Copy-Item -ToSession $s -Path C:\host_path\data.txt -Destination C:\guest_path\Копирайте файл от виртуалната машина (на хоста).

За да копирате C:\guest_path\data. txt към хоста от виртуалната машина, изпълнете:

Copy-Item -FromSession $s -Path C:\guest_path\data.txt -Destination C:\host_path\Stop the persistent session using Remove-PSSession.Remove-PSSession $s

Отстраняване на неизправности

Там са малък набор от често срещани съобщения за грешка, появяващи се чрез PowerShell Direct. Ето най-често срещаните, някои причини и инструменти за диагностициране на проблеми.

Параметрите -VMName или -VMID не съществуват

Проблем:Enter-PSSession, Invoke-Command или New-PSSession нямат параметър -VMName или -VMId.

Потенциални причини: Най-вероятният проблем е, че PowerShell Direct не се поддържа от вашата хост операционна система.

Можете да проверите компилацията на Windows, като изпълните следната команда:

[System.Environment]::OSVersion.Version

Ако използвате поддържана компилация, също е възможно вашата версия на PowerShell да не изпълнява PowerShell Direct. За PowerShell Direct и JEA основната версия трябва да е 5 или по-нова.

Можете да проверите компилацията на вашата версия на PowerShell, като изпълните следната команда:

$PSVersionTable.PSVersion

Грешка: Отдалечена сесия може да е приключила

Забележка: За Enter-PSSession между компилации на хост 10240 и 12400, всички грешки по-долу са докладвани като „Отдалечена сесия може да е приключила“.

Съобщение за грешка:

Enter-PSSession : Възникна грешка, която Windows PowerShell не може да обработи. Отдалечена сесия може да е приключила.

Възможни причини:

Виртуалната машина съществува, но не работи. OS за гости не поддържа PowerShell Direct (вижте изискванията) PowerShell все още не е наличен в системата за гости Операционната система не е завършила зареждането Операционната система не може да се зарежда правилно Някое събитие по време на зареждане изисква въвеждане от потребителя

Можете да използвате cmdlet Get-VM, за да проверите кои виртуални машини се изпълняват на хоста.

Съобщение за грешка:

New-PSSession : Възникна грешка, която Windows PowerShell не може да обработи. Отдалечена сесия може да е приключила.

Възможни причини:

Една от причините, изброени по-горе -- всички те са еднакво приложими за грешка New-PSSessionA в текущи компилации, където идентификационните данни трябва да бъдат изрично предадени с -Credential. Когато това се случи, цялата услуга виси в операционната система за гости и трябва да се рестартира. Можете да проверите дали сесията все още е налична с Enter-PSSession.

За да заобиколите проблема с идентификационните данни, влезте във виртуалната машина с помощта на VMConnect, отворете PowerShell и рестартирайте услугата vmicvmsession, като използвате следния PowerShell:

Restart-Service -Name vmicvmsession

Грешка: Наборът от параметри не може да бъде разрешен

Съобщение за грешка:

Enter-PSSession: Наборът от параметри не може да бъде разрешен с помощта на посочените именувани параметри.

Потенциални причини:

-RunAsAdministrator не се поддържа при свързване към виртуални машини.

Когато се свързвате към контейнер на Windows, флагът -RunAsAdministrator позволява свързване на администратор без изрични идентификационни данни. Тъй като виртуалните машини не дават подразбиращ се администраторски достъп на хоста, трябва изрично да въведете идентификационни данни.

Администраторските идентификационни данни могат да бъдат предадени на виртуалната машина с параметъра -Credential или чрез ръчно въвеждане при подкана.

Грешка: Идентификационните данни са невалидни.

Съобщение за грешка:

Enter-PSSession: Идентификационните данни са невалидни.

Потенциални причини:

Идентификационните данни на госта не можаха да бъдат валидирани. Предоставените идентификационни данни бяха неправилни. Няма потребителски акаунти в госта (ОС не е стартирана преди) Ако се свързвате като администратор: Администраторът не е зададен като активен потребител. Научете повече тук.< h3>Грешка: Входящият параметър VMName не се преобразува във виртуална машина.

Съобщение за грешка:

Enter-PSSession: Входящият параметър VMName не се преобразува в нито една виртуална машина.

Потенциални причини:

Вие не сте администратор на Hyper-V. Виртуалната машина не съществува.

Можете да използвате командата Get-VM, за да проверите дали идентификационните данни, които използвате, имат ролята на администратор на Hyper-V и да видите кои виртуални машини са работи локално на хоста и се стартира.

Примери и ръководства за потребителя

PowerShell Direct поддържа JEA (Just Enough Administration). Вижте това ръководство за потребителя, за да го изпробвате.

Разгледайте мостри в GitHub.


PREV: Защо приложението Plex не може да намери или да се свърже с моя Plex Media Server?

NEXT: Станете сървър на процеси | ABC Legal

Popular Articles

Hot Articles

Navigation Lists

Back to Top