Delen via


Scripts uitvoeren in je Windows-VM met behulp van de actie Uitvoeropdrachten

De functie Opdracht uitvoeren maakt gebruik van de VM-agent (virtuele machine) om PowerShell-scripts uit te voeren binnen een Azure Windows-VM. U kunt deze scripts gebruiken voor algemeen machine- of toepassingsbeheer. Ze kunnen u helpen om snel problemen met vm-toegang en netwerkproblemen vast te stellen en op te lossen en de VIRTUELE machine weer in een goede staat te krijgen.

Vergoedingen

U hebt op meerdere manieren toegang tot uw virtuele machines. Voer opdracht uit om scripts op uw virtuele machines op afstand uit te voeren met behulp van de VM-agent. U gebruikt De opdracht Uitvoeren via de Azure-portal, REST API of PowerShell voor Windows-VM's.

Deze mogelijkheid is handig in alle scenario's waarin u een script wilt uitvoeren binnen een virtuele machine. Het is een van de enige manieren om problemen op te lossen met een virtuele machine waarop de RDP- of SSH-poort niet is geopend vanwege een onjuiste configuratie van netwerk- of beheerdersgebruikers.

Vereisten

Ondersteunde Windows-besturingssystemen

Versie van besturingssysteem x64 ARM64
Windows 10 Ondersteund Ondersteund
Windows 11 Ondersteund Ondersteund
Windows Server 2016 Ondersteund Ondersteund
Windows Server 2016 Core Ondersteund Ondersteund
Windows Server 2019 Ondersteund Ondersteund
Windows Server 2019 Core Ondersteund Ondersteund
Windows Server 2022 Ondersteund Ondersteund
Windows Server 2022 Core Ondersteund Ondersteund
Windows Server 2022 Azure Edition Ondersteund Ondersteund
Windows Server 2025 Ondersteund Ondersteund
Windows Server 2025 Core Ondersteund Ondersteund
Windows Server 2025 Azure Edition Ondersteund Ondersteund

Beperkingen

De volgende beperkingen zijn van toepassing wanneer u de Uitvoeropdracht gebruikt:

  • De uitvoer is beperkt tot de laatste 4096 bytes.
  • De minimale tijd voor het uitvoeren van een script is ongeveer 20 seconden.
  • Scripts worden als Systeem uitgevoerd op Windows.
  • Er kan één script tegelijk worden uitgevoerd.
  • Scripts die om informatie vragen (interactieve modus) worden niet ondersteund.
  • U kunt een actief script niet annuleren.
  • De maximale tijd voor het uitvoeren van een script is 90 minuten. Daarna treedt een time-out op.
  • Uitgaande connectiviteit van de VM is vereist om de resultaten van het script te retourneren.
  • Het is niet raadzaam om een script uit te voeren waardoor de VM-agent wordt gestopt of bijgewerkt. Hierdoor kan de extensie een overgangsstatus hebben, wat leidt tot een time-out.

Notitie

Om correct te kunnen functioneren, vereist De opdracht Uitvoeren vereist connectiviteit (poort 443) naar openbare IP-adressen van Azure. Als de extensie geen toegang heeft tot deze eindpunten, worden de scripts mogelijk uitgevoerd, maar worden de resultaten niet geretourneerd. Als u verkeer op de virtuele machine blokkeert, kunt u servicetags gebruiken om verkeer naar openbare IP-adressen van Azure toe te staan met behulp van de AzureCloud tag.

De functie Opdracht uitvoeren werkt niet als de status van de VM-agent NIET GEREED is. Controleer de agentstatus in de eigenschappen van de VM in Azure Portal.

Beschikbare opdrachten

In deze tabel ziet u de lijst met opdrachten die beschikbaar zijn voor Windows-VM's. U kunt de opdracht RunPowerShellScript gebruiken om een aangepast script uit te voeren dat u wilt. Wanneer u de Azure CLI of PowerShell gebruikt om een opdracht uit te voeren, moet de waarde die u opgeeft voor de --command-id of -CommandId parameter een van de volgende vermelde waarden zijn. Wanneer u een waarde opgeeft die geen beschikbare opdracht is, wordt deze fout weergegeven:

The entity was not found in this Azure location

Beschikbare opdrachten

CommandID Beschrijving Meer informatie
RunPowerShellScript Een PowerShell-script uitvoeren
DisableNLA Hiermee schakelt u Verificatie op netwerkniveau (NLA) uit. U moet de virtuele machine opnieuw opstarten nadat het script is voltooid om de wijziging van kracht te laten worden. Het script zelf start de VM niet opnieuw op. readme
DisableWindowsUpdate Schakel automatische updates uit via Windows Update. readme
EnableAdminAccount Controleert of het lokale beheerdersaccount is uitgeschakeld en indien wel, schakelt het dan in. readme
EnableEMS Schakel EMS (Emergency Management Services) in om seriële consoleverbindingen mogelijk te maken in scenario's voor probleemoplossing. readme
EnableRemotePS Schakel externe PowerShell in. readme
EnableWindowsUpdate Schakel automatische updates in via Windows Update. readme
IMDSCertCheck Controleert de IMDS-status en analyseert vervolgens geïnstalleerde certificaten waarop IMDS afhankelijk is. Als dit ontbreekt, worden aanvullende details en risicobeperkingsstappen weergegeven. readme
IPConfig Geeft gedetailleerde informatie weer voor het IP-adres, subnetmasker en de standaardgateway voor elke adapter die is gebonden aan TCP/IP. Raadpleeg Scripts uitvoeren voor het gebruik ervan readme
RDPSettings Controleert registerinstellingen en domeinbeleidsinstellingen. Hiermee worden beleidsacties voorgesteld als de computer deel uitmaakt van een domein of de instellingen wijzigt in standaardwaarden. readme
ResetRDPCert Hiermee verwijdert u het SSL-certificaat dat is gekoppeld aan de RDP-listener en herstelt u de standaardbeveiliging van de RDP-listener. Gebruik dit script als u problemen met het certificaat ziet. readme
SetRDPPort Hiermee stelt u het standaardpoortnummer of het door de gebruiker opgegeven poortnummer in voor extern bureaublad-verbindingen. Hiermee schakelt u een firewallregel in voor binnenkomende toegang tot de poort. readme
Windows Activation Validation Controleert de huidige Windows-licentiestatus (geactiveerd of niet) en er wordt een waarschuwing gegenereerd als de machine niet is geactiveerd. readme
WindowsGhostedNicValidationScript Dit script scant het Windows-register voor netwerkadapters in PCI- en VMBUS-bussen, vergelijkt deze met momenteel actieve netwerkadapters en identificeert spook-NIC's. Handig voor het oplossen van netwerkproblemen of het opschonen van oude NIC's. readme
WindowsUpgradeAssessmentValidation Dit script is ontworpen om de gereedheid van een Windows-machine (client of server) te evalueren voor een in-place besturingssysteemupgrade, met speciale overwegingen voor virtuele Azure-machines. Het evalueert de versie van het besturingssysteem, ondersteunde upgradepaden, systeemschijfruimte en Azure-beveiligingsfuncties, zoals Vertrouwd starten, Beveiligd opstarten en vTPM. readme

Toegang tot Opdracht uitvoeren beperken

Voor het weergeven van de uitvoeringsopdrachten of het weergeven van de details van een opdracht is de Microsoft.Compute/locations/runCommands/read machtiging op abonnementsniveau vereist. De ingebouwde lezerrol en hogere niveaus hebben deze machtiging.

Voor het uitvoeren van een opdracht is de Microsoft.Compute/virtualMachines/runCommand/action machtiging vereist. De rol Inzender voor virtuele machines en hogere niveaus hebben deze machtiging.

U kunt een van de ingebouwde rollen gebruiken of een aangepaste rol maken om de opdracht Uitvoeren te gebruiken.

Run-opdrachten gebruiken

Notitie

  • Parameterwaarden kunnen alleen tekenreekstype zijn en het script is verantwoordelijk voor het converteren ervan naar andere typen, indien nodig.
  • Afhankelijk van welke modaliteit wordt gebruikt om uit te voeren, zijn er mogelijk escape-bewerkingen nodig. Als u bijvoorbeeld de opdracht uitvoert in een PowerShell-sessie, moet het pad naar het scriptbestand aanhalingstekens bevatten.
  • De ingebouwde opdrachten kunnen niet worden bewerkt.

Ga naar een virtuele machine in Azure Portal en selecteer opdracht Uitvoeren in het linkermenu onder Bewerkingen. U ziet een lijst met de beschikbare opdrachten die op de VIRTUELE machine moeten worden uitgevoerd.

Lijst met opdrachten

Kies een opdracht die u wilt uitvoeren. Sommige opdrachten hebben mogelijk optionele of vereiste invoerparameters. Voor deze opdrachten worden de parameters weergegeven als tekstvelden om de invoerwaarden op te geven. Voor elke opdracht kunt u het script weergeven dat wordt uitgevoerd door het weergavescript uit te vouwen. RunPowerShellScript verschilt van de andere opdrachten, omdat u hiermee uw eigen aangepaste script kunt opgeven.

Nadat u de opdracht hebt gekozen, selecteert u Uitvoeren om het script uit te voeren. Nadat het script is voltooid, worden de uitvoer en eventuele fouten in het uitvoervenster geretourneerd. In de volgende schermopname ziet u een voorbeeld van uitvoer van het uitvoeren van de RDPSettings-opdracht .

Uitvoer van opdrachtscript uitvoeren

Windows-probleemoplossing voor opdracht Uitvoeren van actie

Raadpleeg het logboekbestand Run Run run van RunCommandExtension meestal in de volgende map als u problemen met de actieuitvoering voor Windows-omgevingen wilt oplossen: C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log voor meer informatie.

Bekende problemen

  • De opdrachtextensie Voor het uitvoeren van acties kan mogelijk niet worden uitgevoerd in uw Windows-omgeving als de opdracht gereserveerde tekens bevat. Voorbeeld:

    Als het & symbool wordt doorgegeven in de parameter van uw opdracht, zoals het onderstaande PowerShell-script, kan dit mislukken.

    $paramm='abc&jj'
    Invoke-AzVMRunCommand -ResourceGroupName AzureCloudService1 -Name test -CommandId 'RunPowerShellScript' -ScriptPath     C:\data\228332902\PostAppConfig.ps1 -Parameter @{"Prefix" = $paramm}
    

    Gebruik het ^ teken om het in het argument te escapen & , zoals $paramm='abc^&jj'

  • De opdrachtextensie Uitvoeren kan ook niet worden uitgevoerd als de opdracht die moet worden uitgevoerd '\n' in het pad bevat, omdat deze wordt behandeld als een nieuwe regel. Bevat bijvoorbeeld C:\Windows\notepad.exe het \n bestandspad. Overweeg om te \n vervangen door \N in uw pad.

  • Zorg ervoor dat u geen aangepaste instelling in de registersleutel HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun hebt (hier wordt beschreven). Dit kan worden geactiveerd tijdens de installatie van de RunCommand-extensie of het inschakelen van fasen en een fout veroorzaken zoals 'XYZ wordt niet herkend als een interne of externe opdracht, beveiligbaar programma of batchbestand'.

Opdracht Actie uitvoeren verwijderen

Raadpleeg de onderstaande stappen voor Azure PowerShell en CLI als u de windows-extensie voor het uitvoeren van acties wilt verwijderen:

Vervang rgname en vmname door de relevante resourcegroepnaam en de naam van de virtuele machine in de volgende verwijderingsvoorbeelden.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandWindowsExtension'

Notitie

Wanneer u een opdracht uitvoeren opnieuw toepast, wordt de extensie automatisch geïnstalleerd. U kunt de opdracht voor het verwijderen van extensies gebruiken om eventuele problemen met betrekking tot de extensie op te lossen.

Volgende stappen

Zie Scripts uitvoeren op uw Windows-VM voor meer informatie over andere manieren om scripts en opdrachten op afstand uit te voeren op uw virtuele machine.