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 újabb rendszerű 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:

Requirements

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áljon virtuálisgép-kapcsolatot (VMConnect) vagy csatlakozzon hálózati kapcsolaton keresztül.

Konfigurációs követelmények:

  • A virtuális gépnek helyileg kell futnia a gazdagépen.
  • A virtuális gépet be kell kapcsolni, és legalább egy konfigurált felhasználói profillal kell futtatni.
  • A gazdagépre 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 a PowerShellt rendszergazdaként.

  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>
    

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

  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 futtatott parancsok végrehajtása a virtuális gépen történik. A teszteléshez futtassa a ipconfig vagy a hostname parancsot, hogy meggyőződjön arról, ezek a parancsok valóban 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, tekintse meg a lehetséges okok hibaelhárítását .

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 olyan helyzetekhez ideális, 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 a PowerShellt rendszergazdaként.

  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 }
    

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

    A parancs a virtuális gépen fut. Ha a parancs kimenetet hoz létre, a konzolon láthatja. A parancs futtatásakor a kapcsolat automatikusan bezárul.

Szkript futtatása:

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

  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 
    

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

    A szkript a virtuális gépen fut. A parancs futtatásakor a kapcsolat automatikusan bezárul.

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 hitelesítő adatok átadásával Invoke-Command vagy Enter-PSSession anélkül.

Ugyanezzel a jogkivonattal 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. Az állandó munkamenetek használatához számos eszköz használható. Ebben a példában a New-PSSession és Copy-Item parancsokat használja az adatok áthelyezésére 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 a PowerShellt rendszergazdaként.

  2. Futtassa az alábbi parancsok egyikét egy állandó PowerShell-munkamenet létrehozásához a virtuális gépen a következő paranccsal New-PSSession: .

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

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

    Figyelmeztetés

    Az 14500 előtti buildekben hiba történt. Ha nem ad meg explicit módon hitelesítő adatokat a -Credential jelölővel, a vendégszolgáltatás összeomlik, és újra kell indítani. Ha ezt a problémát tapasztalja, olvassa el a Hiba: Lehetséges, hogy egy távoli munkamenet véget ért részt a megoldási útmutatóért.

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

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

    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).

    A virtuális gépről a gazdagépre való másoláshoz C:\guest_path\data.txt futtassa a következőt:

    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 Direct néhány gyakori hibaüzenetet jelenít 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 gazdagép operációs rendszere nem támogatja a PowerShell Directet.

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

[System.Environment]::OSVersion.Version

Ha támogatott buildet futtat, előfordulhat, hogy a PowerShell verziója nem támogatja 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:

Az 10240-as és 12400-as gazdagép buildjei közötti Enter-PSSession során minden hiba úgy jelentkezik, mint "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égben
    • 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 korábban felsorolt okok egyike – mindegyik vonatkozik a New-PSSession-ra.
  • Hiba az aktuális verziókban, ahol a -Credential használatával explicit módon meg kell adnia a hitelesítő adatokat. Ha ez a hiba jelentkezik, 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ő adatokkal kapcsolatos probléma 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-paranccsal:

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éterek használatával.

Lehetséges okok:

  • Virtuális gépekhez való csatlakozáskor nem használható -RunAsAdministrator .

    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ép számára, ezért explicit módon meg kell adnia a hitelesítő adatokat.

A paraméterrel rendszergazdai hitelesítő adatokat adhat át a -Credential virtuális gépnek, vagy manuálisan is megadhatja őket, amikor a rendszer kéri.

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
    • A megadott hitelesítő adatok helytelenek voltak.
    • Nincsenek felhasználói fiókok a vendégben (az operációs rendszer korábban nem indult el)
    • Ha rendszergazdaként csatlakozik: A rendszergazda nincs aktív felhasználóként beállítva. További információ: A beépített rendszergazdai fiók engedélyezése és letiltása.

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őrizze, 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.