Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt PowerShell Direct gebruiken om willekeurige PowerShell uit te voeren in een Windows 10 of hoger, of windows Server 2016 of nieuwere virtuele machine vanaf uw Hyper-V host. Gebruik PowerShell Direct, ongeacht de netwerkconfiguratie of instellingen voor extern beheer.
Hier volgen enkele manieren waarop u PowerShell Direct kunt uitvoeren:
- Als interactieve sessie met behulp van de cmdlet Enter-PSSession
- Als een sectie voor eenmalig gebruik om één opdracht of script uit te voeren met behulp van de cmdlet Invoke-Command
- Als persistente sessie (build 14280 en hoger) met behulp van de cmdlets New-PSSession, Copy-Item en Remove-PSSession
Requirements
Vereisten voor het besturingssysteem:
- Host: Windows 10, Windows Server 2016 of hoger met Hyper-V.
- Gast/virtuele machine: Windows 10, Windows Server 2016 of hoger.
Als u oudere virtuele machines beheert, gebruikt u Virtual Machine Connection (VMConnect) of maakt u verbinding via een netwerkverbinding.
Configuratievereisten:
- De virtuele machine moet lokaal worden uitgevoerd op de host.
- De virtuele machine moet worden ingeschakeld en uitgevoerd met ten minste één geconfigureerd gebruikersprofiel.
- U moet als Hyper-V-beheerder zijn aangemeld bij de hostcomputer.
- U moet geldige gebruikersreferenties opgeven voor de virtuele machine.
Een interactieve PowerShell-sessie maken en afsluiten
De eenvoudigste manier om PowerShell-opdrachten uit te voeren op een virtuele machine is door een interactieve sessie te starten.
Wanneer de sessie wordt gestart, worden de opdrachten die u typt, uitgevoerd op de virtuele machine, net zoals u ze rechtstreeks hebt getypt in een PowerShell-sessie op de virtuele machine zelf.
Een interactieve sessie starten:
Open PowerShell als administrator op de Hyper-V-host.
Voer een van de volgende opdrachten uit om een interactieve sessie te maken met behulp van de naam of GUID van de virtuele machine:
Enter-PSSession -VMName <VMName> Enter-PSSession -VMId <VMId>Voer de referenties voor de virtuele machine in wanneer u hierom wordt gevraagd.
Voer opdrachten uit op uw virtuele machine. Als het goed is, ziet u de VMName als voorvoegsel voor uw PowerShell-prompt:
[VMName]: PS C:\>Elke opdracht die u uitvoert, wordt uitgevoerd op uw virtuele machine. Voer om te testen
ipconfigofhostnameuit om te controleren of deze opdrachten worden uitgevoerd op de virtuele machine.Wanneer u klaar bent, voert u de volgende opdracht uit om de sessie te sluiten:
Exit-PSSession
Opmerking
Als uw sessie geen verbinding maakt, raadpleegt u de probleemoplossing voor mogelijke oorzaken.
Zie Enter-PSSession en Exit-PSSession voor meer informatie over deze cmdlets.
Een script of opdracht uitvoeren met Invoke-Command
PowerShell Direct met Invoke-Command is perfect voor situaties waarin u één opdracht of één script op een virtuele machine moet uitvoeren, maar u niet verder hoeft te communiceren met de virtuele machine dan dat punt.
Eén opdracht uitvoeren:
Open PowerShell als administrator op de Hyper-V-host.
Voer een van de volgende opdrachten uit om een sessie te maken met behulp van de naam of GUID van de virtuele machine:
Invoke-Command -VMName <VMName> -ScriptBlock { command } Invoke-Command -VMId <VMId> -ScriptBlock { command }Voer de referenties voor de virtuele machine in wanneer u hierom wordt gevraagd.
De opdracht wordt uitgevoerd op de virtuele machine. Als de opdracht uitvoer produceert, ziet u deze in uw console. De verbinding wordt automatisch gesloten zodra de opdracht wordt uitgevoerd.
Een script uitvoeren:
Open PowerShell als administrator op de Hyper-V-host.
Voer een van de volgende opdrachten uit om een sessie te maken met behulp van de naam of GUID van de virtuele machine:
Invoke-Command -VMName <VMName> -FilePath C:\host\script_path\script.ps1 Invoke-Command -VMId <VMId> -FilePath C:\host\script_path\script.ps1Voer de referenties voor de virtuele machine in wanneer u hierom wordt gevraagd.
Het script wordt uitgevoerd op de virtuele machine. De verbinding wordt automatisch gesloten zodra de opdracht wordt uitgevoerd.
Zie Invoke-Command voor meer informatie over deze cmdlet.
Bestanden kopiëren met New-PSSession en Copy-Item
Opmerking
PowerShell Direct ondersteunt alleen permanente sessies in Windows-builds 14280 en hoger
Permanente PowerShell-sessies zijn ongelooflijk nuttig bij het schrijven van scripts die acties coördineren op een of meer externe machines. Zodra deze zijn gemaakt, bestaan permanente sessies op de achtergrond totdat u besluit ze te verwijderen. Dit betekent dat u telkens opnieuw naar dezelfde sessie kunt verwijzen met Invoke-Command of Enter-PSSession zonder referenties door te geven.
Met hetzelfde token houden sessies de status vast. Aangezien permanente sessies behouden blijven, blijven alle variabelen die u in een sessie maakt of doorgegeven aan een sessie, behouden voor meerdere aanroepen. U kunt een aantal hulpprogramma's gebruiken om te werken met permanente sessies. In dit voorbeeld gebruikt u New-PSSession en Copy-Item om gegevens van de host naar een virtuele machine en van een virtuele machine naar de host te verplaatsen.
Als u een sessie wilt maken, kopieert u vervolgens bestanden:
Open PowerShell als administrator op de Hyper-V-host.
Voer een van de volgende opdrachten uit om een permanente PowerShell-sessie naar de virtuele machine te maken met behulp van
New-PSSession.$s = New-PSSession -VMName <VMName> -Credential (Get-Credential) $s = New-PSSession -VMId <VMId> -Credential (Get-Credential)Voer de referenties voor de virtuele machine in wanneer u hierom wordt gevraagd.
Waarschuwing
Er is een fout in builds vóór 14500. Als u niet expliciet referenties opgeeft met de
-Credentialvlag, loopt de service in de gast vast en moet deze opnieuw worden opgestart. Als u dit probleem ondervindt, raadpleegt u de sectieFout: een externe sessie is mogelijk beëindigd voor tijdelijke instructies.Kopieer een bestand naar de virtuele machine.
Als u vanaf de hostmachine naar de virtuele machine wilt kopiëren
C:\host_path\data.txt, voert u het volgende uit:Copy-Item -ToSession $s -Path C:\host_path\data.txt -Destination C:\guest_path\Kopieer een bestand van de virtuele machine (naar de host).
Als u vanaf de virtuele machine naar de host wilt kopiëren
C:\guest_path\data.txt, voert u het volgende uit:Copy-Item -FromSession $s -Path C:\guest_path\data.txt -Destination C:\host_path\Stop de permanente sessie met behulp van
Remove-PSSession.Remove-PSSession $s
Probleemoplossingsproces
PowerShell Direct geeft een kleine set veelvoorkomende foutberichten weer. In de volgende secties worden de meest voorkomende foutberichten, enkele oorzaken en hulpprogramma's beschreven voor het diagnosticeren van problemen.
-VMName of -VMID parameters bestaan niet
Probleem:
Enter-PSSession, Invoke-Command, of New-PSSession hebben geen -VMName of -VMId parameter.
Mogelijke oorzaken:
Het meest waarschijnlijke probleem is dat uw hostbesturingssysteem geen ondersteuning biedt voor PowerShell Direct.
U kunt uw Windows-build controleren door de volgende opdracht uit te voeren:
[System.Environment]::OSVersion.Version
Als u een ondersteunde build uitvoert, is het ook mogelijk dat uw versie van PowerShell geen ondersteuning biedt voor PowerShell Direct. Voor PowerShell Direct en JEA moet de primaire versie 5 of hoger zijn.
U kunt de Build van uw PowerShell-versie controleren door de volgende opdracht uit te voeren:
$PSVersionTable.PSVersion
Fout: een externe sessie is mogelijk beëindigd
Opmerking
Voor Enter-PSSession tussen host builds 10240 en 12400 worden alle fouten gerapporteerd als 'Een externe sessie is mogelijk beëindigd'.
Foutmelding:
Enter-PSSession: er is een fout opgetreden die niet kan worden verwerkt met Windows PowerShell. Een externe sessie is mogelijk beëindigd.
Mogelijke oorzaken:
- De virtuele machine bestaat, maar is niet gestart.
- Het gastbesturingssysteem biedt geen ondersteuning voor PowerShell Direct. Zie vereisten.
- PowerShell is nog niet beschikbaar in de gast
- Het besturingssysteem heeft het opstarten niet voltooid
- Het besturingssysteem kan niet correct worden opgestart
- Voor een gebeurtenis met opstarttijd is gebruikersinvoer vereist
Gebruik de cmdlet Get-VM om te controleren welke VM's op de host worden uitgevoerd.
Foutmelding:
New-PSSession: er is een fout opgetreden die niet kan worden verwerkt met Windows PowerShell. Een externe sessie is mogelijk beëindigd.
Mogelijke oorzaken:
- Een van de eerder vermelde redenen : ze zijn allemaal van toepassing op
New-PSSession - Er is een bug in de huidige builds waarbij je verplicht bent expliciet je inloggegevens door te geven.
-CredentialWanneer deze fout optreedt, loopt de hele service vast in het gastbesturingssysteem en moet deze opnieuw worden opgestart. U kunt controleren of de sessie nog steeds beschikbaar is met Enter-PSSession.
Als u het referentieprobleem wilt omzeilen, meldt u zich aan bij de virtuele machine met behulp van VMConnect, opent u PowerShell en start u de vmicvmsession-service opnieuw met de volgende PowerShell-opdracht:
Restart-Service -Name vmicvmsession
Fout: parameterset kan niet worden opgelost
Foutmelding:
Enter-PSSession: Parameterset kan niet worden omgezet met behulp van de opgegeven benoemde parameters.
Mogelijke oorzaken:
U kunt
-RunAsAdministratorniet gebruiken bij het verbinden met virtuele machines.Wanneer u verbinding maakt met een Windows-container, staat de
-RunAsAdministratorvlag beheerdersverbindingen zonder expliciete referenties toe. Omdat virtuele machines de host geen impliciete beheerdersrechten geven, moet u expliciet aanmeldgegevens invoeren.
U kunt beheerdersreferenties doorgeven aan de virtuele machine met de -Credential parameter of door ze handmatig in te voeren wanneer hierom wordt gevraagd.
Fout: de referentie is ongeldig
Foutmelding:
Enter-PSSession: de referentie is ongeldig.
Mogelijke oorzaken:
- De gastreferenties kunnen niet worden gevalideerd
- De opgegeven referenties zijn onjuist.
- Er zijn geen gebruikersaccounts in de gast (het besturingssysteem is niet eerder opgestart)
- Als u verbinding maakt als beheerder: Beheerder is niet ingesteld als een actieve gebruiker. Zie Het ingebouwde administratoraccount in- en uitschakelen voor meer informatie.
Fout: de parameter VMName van invoer wordt niet omgezet in een virtuele machine.
Foutmelding:
Enter-PSSession: de parameter input VMName wordt niet omgezet in een virtuele machine.
Mogelijke oorzaken:
- U bent geen Hyper-V-beheerder.
- De virtuele machine bestaat niet.
Gebruik de cmdlet Get-VM om te controleren of de referenties die u gebruikt de beheerdersrol Hyper-V hebben en om te zien welke VM's lokaal op de host worden uitgevoerd en opgestart.
Voorbeelden en gebruikershandleidingen
PowerShell Direct ondersteunt Just Enough Administration (JEA).
Bekijk voorbeelden op GitHub.