Megosztás a következőn keresztül:


Virtuális gépek automatizálása és felügyelete a PowerShell használatával

A PowerShell Direct használatával tetszőleges PowerShellt futtathat Windows 10 vagy újabb, illetve Windows Server 2016 vagy későbbi verziójú virtuális gépen a Hyper-V gazdagépről. A PowerShell Direct használata a hálózati konfigurációtól és a távfelügyeleti beállításoktól függetlenül.

A PowerShell Direct futtatásának néhány módja:

Követelmények

Az operációs rendszer követelményei:

  • Gazdagép: Hyper-V-t futtató Windows 10, Windows Server 2016 vagy újabb.
  • Vendég/virtuális gép: Windows 10, Windows Server 2016 vagy újabb.

Ha régebbi virtuális gépeket kezel, használja a Virtuálisgép-kapcsolatot (VMConnect), vagy konfiguráljon egy virtuális hálózatot a virtuális géphez.

Konfigurációs követelmények:

  • A virtuális gépnek helyileg kell futnia az adott gazdagépen.
  • A virtuális gépet be kell kapcsolni, és legalább egy konfigurált felhasználói profillal kell futtatni.
  • A számítógépre mint Hyper-V rendszergazdaként kell bejelentkeznie.
  • Érvényes felhasználói hitelesítő adatokat kell megadnia a virtuális géphez.

Interaktív PowerShell-munkamenet létrehozása és kilépése

A PowerShell-parancsok virtuális gépen való futtatásának legegyszerűbb módja egy interaktív munkamenet indítása.

A munkamenet indításakor a beírt parancsok ugyanúgy futnak a virtuális gépen, mintha közvetlenül beírta őket egy PowerShell-munkamenetbe a virtuális gépen.

Interaktív munkamenet indítása:

  1. A Hyper-V gazdagépen nyissa meg rendszergazdaként a PowerShellt.

  2. Futtassa az alábbi parancsok egyikét egy interaktív munkamenet létrehozásához a virtuális gép nevével vagy GUID-jának használatával:

    Enter-PSSession -VMName <VMName>
    Enter-PSSession -VMId <VMId>
    

    Adja meg a virtuális gép hitelesítő adatait, amikor a rendszer kéri.

  3. Parancsok futtatása a virtuális gépen. A PowerShell-parancssor előtagjaként a virtuálisgép-nevet kell látnia a következő módon:

    [VMName]: PS C:\>
    

    A parancsfuttatások a virtuális gépen fognak futni. A teszteléshez futtathatja ipconfig vagy hostname ellenőrizheti, hogy ezek a parancsok futnak-e a virtuális gépen.

  4. Ha végzett, futtassa a következő parancsot a munkamenet bezárásához:

     Exit-PSSession 
    

Megjegyzés:

Ha a munkamenet nem csatlakozik, nézze meg a hibaelhárítást a lehetséges okokért.

További információ ezekről a parancsmagokról: Enter-PSSession and Exit-PSSession.

Szkript vagy parancs futtatása Invoke-Command

A PowerShell Direct és a Invoke-Command ideális olyan helyzetekhez, amikor egy parancsot vagy egy szkriptet kell futtatnia egy virtuális gépen, de nem kell tovább használnia a virtuális gépet ezen a ponton túl.

Egyetlen parancs futtatásához:

  1. A Hyper-V gazdagépen nyissa meg rendszergazdaként a PowerShellt.

  2. Futtassa az alábbi parancsok egyikét egy munkamenet létrehozásához a virtuális gép nevének vagy GUID-jának használatával:

    Invoke-Command -VMName <VMName> -ScriptBlock { command } 
    Invoke-Command -VMId <VMId> -ScriptBlock { command }
    

    Adja meg a virtuális gép hitelesítő adatait, amikor a rendszer kéri.

    A parancs a virtuális gépen lesz végrehajtva, ha a konzol kimenete van, az a konzolra lesz nyomtatva. A parancs futtatása után a rendszer automatikusan bezárja a kapcsolatot.

Szkript futtatása:

  1. A Hyper-V gazdagépen nyissa meg rendszergazdaként a PowerShellt.

  2. Futtassa az alábbi parancsok egyikét egy munkamenet létrehozásához a virtuális gép nevének vagy GUID-jának használatával:

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

    Adja meg a virtuális gép hitelesítő adatait, amikor a rendszer kéri.

    A szkript a virtuális gépen lesz végrehajtva. A parancs futtatása után a rendszer automatikusan bezárja a kapcsolatot.

A parancsmaggal kapcsolatos további információkért lásd: Invoke-Command.

Fájlok másolása New-PSSession és Copy-Item

Megjegyzés:

A PowerShell Direct csak az állandó munkameneteket támogatja a Windows 14280-as és újabb buildjeiben

Az állandó PowerShell-munkamenetek hihetetlenül hasznosak olyan szkriptek írásakor, amelyek egy vagy több távoli gépen koordinálják a műveleteket. A létrehozás után állandó munkamenetek léteznek a háttérben, amíg el nem dönti, hogy törli őket. Ez azt jelenti, hogy újra és újra hivatkozhat ugyanarra a munkamenetre Invoke-Command vagy Enter-PSSession használatával anélkül, hogy hitelesítő adatokat kellene átadnia.

Ugyanígy, a munkamenetek állapotot tartanak. Mivel az állandó munkamenetek továbbra is megmaradnak, a munkamenetben létrehozott vagy egy munkamenetnek átadott változók több hívás során is megmaradnak. Számos eszköz áll rendelkezésre az állandó munkamenetek működéséhez. Ebben a példában New-PSSession és Copy-Item használatával helyezünk át adatokat a gazdagépről egy virtuális gépre, illetve egy virtuális gépről a gazdagépre.

Munkamenet létrehozásához másolja a fájlokat:

  1. A Hyper-V gazdagépen nyissa meg rendszergazdaként a PowerShellt.

  2. Futtassa az alábbi parancsok egyikét, hogy létrehozzon egy állandó PowerShell-munkamenetet a virtuális géppel a New-PSSession használatával.

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

    Adja meg a virtuális gép hitelesítő adatait, amikor a rendszer kéri.

    Figyelmeztetés

    Az 14500 előtti buildekben hiba történt. Ha a hitelesítő adatok nincsenek explicit módon megadva jelölővel -Credential , a vendég szolgáltatása összeomlik, és újra kell indítani. Ha ezt a problémát tapasztalja, az „Hiba: Lehetséges, hogy egy távoli munkamenet véget ért” című szakaszban talál átmeneti megoldást.

  3. Másolja a fájlt a virtuális gépre.

    A gazdagépről a virtuális gépre való másoláshoz futtassa a C:\host_path\data.txt parancsot.

    Copy-Item -ToSession $s -Path C:\host_path\data.txt -Destination C:\guest_path\
    
  4. Fájl másolása a virtuális gépről (a gazdagépre).

    Annak érdekében, hogy C:\guest_path\data.txt a virtuális gépről a gazdagépre másolhassa, futtassa a következő parancsot:

    Copy-Item -FromSession $s -Path C:\guest_path\data.txt -Destination C:\host_path\
    
  5. Állítsa le az állandó munkamenetet a következő használatával Remove-PSSession: .

    Remove-PSSession $s
    

Hibaelhárítás

A PowerShell Directben néhány gyakori hibaüzenet jelenik meg. A következő szakaszok a leggyakoribb hibaüzeneteket, néhány okot és a problémák diagnosztizálását szolgáló eszközöket ismertetik.

-VMName vagy -VMID paraméterek nem léteznek

Probléma:

Enter-PSSession, Invoke-Command vagy New-PSSession nem rendelkezik -VMName vagy -VMId paraméterrel.

Lehetséges okok:

A legvalószínűbb probléma az, hogy a PowerShell Directet nem támogatja a gazdagép operációs rendszere.

A Windows-buildet az alábbi parancs futtatásával ellenőrizheti:

[System.Environment]::OSVersion.Version

Ha támogatott buildet futtat, az is lehetséges, hogy a PowerShell-verzió nem futtatja a PowerShell Directet. A PowerShell Direct és a JEA esetében a főverziónak 5 vagy újabbnak kell lennie.

A PowerShell-verzió buildjének ellenőrzéséhez futtassa a következő parancsot:

$PSVersionTable.PSVersion

Hiba: Lehet, hogy egy távoli munkamenet véget ért

Megjegyzés:

A Enter-PSSession esetében a gazdagép-buildek 10240 és 12400 között minden hiba az alábbi üzenet alatt jelent meg: "A távoli munkamenet lehet, hogy véget ért."

Hibaüzenet:

Enter-PSSession: Hiba történt, amelyet a Windows PowerShell nem tud kezelni. Lehet, hogy egy távoli munkamenet véget ért.

Lehetséges okok:

  • A virtuális gép létezik, de nem fut.
  • A vendég operációs rendszer nem támogatja a PowerShell Directet. Lásd a követelményeket.
  • A PowerShell még nem érhető el a vendég operációs rendszerben
    • Az operációs rendszer még nem fejezte be a rendszerindítást
    • Az operációs rendszer nem tud megfelelően elindulni
    • Néhány rendszerindítási idő eseményhez felhasználói bevitel szükséges

A Get-VM parancsmaggal ellenőrizheti, hogy mely virtuális gépek futnak a gazdagépen.

Hibaüzenet:

New-PSSession: Hiba történt, amelyet a Windows PowerShell nem tud kezelni. Lehet, hogy egy távoli munkamenet véget ért.

Lehetséges okok:

  • A fent felsorolt okok egyike – mind egyformán alkalmazhatók a New-PSSession
  • Hiba az aktuális buildekben, ahol a hitelesítő adatokat explicit módon kell átadni -Credential. Ha ez történik, a teljes szolgáltatás lefagy a vendég operációs rendszerben, és újra kell indítani. Ellenőrizheti, hogy a munkamenet továbbra is elérhető-e az Enter-PSSession használatával.

A hitelesítő adatok problémájának megoldásához jelentkezzen be a virtuális gépre a VMConnect használatával, nyissa meg a PowerShellt, és indítsa újra a vmicvmsession szolgáltatást a következő PowerShell-lel:

Restart-Service -Name vmicvmsession

Hiba: A paraméterkészlet nem oldható fel

Hibaüzenet:

Enter-PSSession: A paraméterkészlet nem oldható fel a megadott elnevezett paraméterekkel.

Lehetséges okok:

  • -RunAsAdministrator virtuális gépekhez való csatlakozáskor nem támogatott.

    Windows-tárolóhoz való csatlakozáskor a jelző engedélyezi a -RunAsAdministrator rendszergazdai kapcsolatokat explicit hitelesítő adatok nélkül. Mivel a virtuális gépek nem biztosítanak hallgatólagos rendszergazdai hozzáférést a gazdagépnek, explicit módon meg kell adnia a hitelesítő adatokat.

A rendszergazdai hitelesítő adatok átadhatók a virtuális gépnek a -Credential paraméterrel, vagy ha a rendszer kéri, manuálisan adja meg őket.

Hiba: A hitelesítő adatok érvénytelenek

Hibaüzenet:

Enter-PSSession: A hitelesítő adatok érvénytelenek.

Lehetséges okok:

  • A vendég hitelesítő adatai nem érvényesíthetők

Hiba: A bemeneti VMName paraméter nem oldható fel egyetlen virtuális gépre sem.

Hibaüzenet:

Enter-PSSession: A bemeneti VMName paraméter nem oldható fel egyetlen virtuális gépre sem.

Lehetséges okok:

  • Ön nem Hyper-V rendszergazda.
  • A virtuális gép nem létezik.

A Get-VM parancsmaggal ellenőrizheti, hogy a használt hitelesítő adatok rendelkeznek-e a Hyper-V rendszergazdai szerepkörrel, és hogy mely virtuális gépek futnak helyileg a gazdagépen, és melyek indulnak el.

Minták és felhasználói útmutatók

A PowerShell Direct támogatja a Just Enough Administration (JEA) használatát.

Minták megtekintése a GitHubon.