Externe hulpprogramma's gebruiken om problemen met azure-VM's op te lossen
Van toepassing op: ✔️ Windows-VM's
Wanneer u problemen op een virtuele Azure-machine (VM) oplost, kunt u verbinding maken met de virtuele machine met behulp van de externe hulpprogramma's die in dit artikel worden besproken in plaats van het Remote Desktop Protocol (RDP).
Seriële console
Gebruik een seriële console voor Virtuele Azure-machines om opdrachten uit te voeren op de externe Azure-VM.
Externe CMD
Download PsExec. Maak verbinding met de VIRTUELE machine door de volgende opdracht uit te voeren:
psexec \\<computer>-u user -s cmd
Notitie
- De opdracht moet worden uitgevoerd op een computer die zich in hetzelfde virtuele netwerk bevindt.
- DIP of HostName kan worden gebruikt om de computer> te vervangen<.
- De parameter -s zorgt ervoor dat de opdracht wordt aangeroepen met behulp van systeemaccount (beheerdersmachtiging).
- PsExec maakt gebruik van TCP-poorten 135 en 445. Als gevolg hiervan moeten de twee poorten zijn geopend op de firewall.
Opdracht uitvoeren
Zie PowerShell-scripts uitvoeren op uw Windows-VM met de opdracht Uitvoeren voor meer informatie over het gebruik van de opdrachtfunctie uitvoeren om scripts uit te voeren op de VIRTUELE machine.
Aangepaste scriptextensie
U kunt de functie Aangepaste scriptextensie gebruiken om een aangepast script uit te voeren op de doel-VM. Als u deze functie wilt gebruiken, moet aan de volgende voorwaarden worden voldaan:
De VM heeft connectiviteit.
Azure Virtual Machine Agent is geïnstalleerd en werkt zoals verwacht op de VIRTUELE machine.
De extensie is niet eerder geïnstalleerd op de virtuele machine.
De extensie injecteert het script alleen de eerste keer dat het wordt gebruikt. Als u deze functie later gebruikt, herkent de extensie dat deze al is gebruikt en uploadt het nieuwe script niet.
Upload uw script naar een opslagaccount en genereer een eigen container. Voer vervolgens het volgende script uit in Azure PowerShell op een computer die verbinding heeft met de virtuele machine.
Voor Azure Resource Manager-VM's
#Set up the basic variables.
$subscriptionID = "<<SUBSCRIPTION ID>>"
$storageAccount = "<<STORAGE ACCOUNT>>"
$storageRG = "<<RESOURCE GROUP OF THE STORAGE ACCOUNT>>"
$localScript = "<<FULL PATH OF THE PS1 FILE TO EXECUTE ON THE VM>>"
$blobName = "file.ps1" #Name you want for the blob in the storage.
$vmName = "<<VM NAME>>"
$vmResourceGroup = "<<RESOURCE GROUP>>"
$vmLocation = "<<DATACENTER>>"
#Set up the Azure PowerShell module, and ensure the access to the subscription.
Login-AzAccount #Ensure login with the account associated with the subscription ID.
Get-AzSubscription -SubscriptionId $subscriptionID | Select-AzSubscription
#Set up the access to the storage account, and upload the script.
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageRG -Name $storageAccount).Value[0]
$context = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageKey
$container = "cse" + (Get-Date -Format yyyyMMddhhmmss)
New-AzureStorageContainer -Name $container -Permission Off -Context $context
Set-AzureStorageBlobContent -File $localScript -Container $container -Blob $blobName -Context $context
#Push the script into the VM.
Set-AzVMCustomScriptExtension -Name "CustomScriptExtension" -ResourceGroupName $vmResourceGroup -VMName $vmName -Location $vmLocation -StorageAccountName $storageAccount -StorageAccountKey $storagekey -ContainerName $container -FileName $blobName -Run $blobName
Externe PowerShell
Notitie
TCP-poort 5986 (HTTPS) moet geopend zijn, zodat u deze optie kunt gebruiken.
Voor Azure Resource Manager-VM's moet u poort 5986 openen in de netwerkbeveiligingsgroep (NSG). Zie Beveiligingsgroepen voor meer informatie.
Voor RDFE-VM's moet u een eindpunt hebben met een privépoort (5986) en een openbare poort. Vervolgens moet u die openbare poort ook openen op de NSG.
De clientcomputer instellen
Als u PowerShell wilt gebruiken om extern verbinding te maken met de virtuele machine, moet u eerst de clientcomputer instellen om de verbinding toe te staan. Om dit te doen, voegt u de VM toe aan de lijst met vertrouwde PowerShell-hosts door de volgende opdracht uit te voeren, indien van toepassing.
Eén VIRTUELE machine toevoegen aan de lijst met vertrouwde hosts:
Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName>
Meerdere VM's toevoegen aan de lijst met vertrouwde hosts:
Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName1>,<ComputerName2>
Alle computers toevoegen aan de lijst met vertrouwde hosts:
Set-Item wsman:\localhost\Client\TrustedHosts -value *
RemotePS inschakelen op de virtuele machine
Voor virtuele machines die zijn gemaakt met het klassieke implementatiemodel, gebruikt u de aangepaste scriptextensie om het volgende script uit te voeren:
Enable-PSRemoting -Force
New-NetFirewallRule -Name "Allow WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Profile Any -Action Allow -Direction Inbound -LocalPort 5986 -Protocol TCP
$thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My).Thumbprint
$command = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:computername""; CertificateThumbprint=""$thumbprint""}"
cmd.exe /C $command
Voor Azure Resource Manager-VM's voert u opdrachten uit vanuit de portal om het EnableRemotePS-script uit te voeren:
Verbinding maken met de VM
Voer de volgende opdracht uit op basis van de locatie van de clientcomputer:
Buiten het virtuele netwerk of de implementatie
Voer de volgende opdracht uit voor een VIRTUELE machine die is gemaakt met het klassieke implementatiemodel:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
Voor een Azure Resource Manager-VM voegt u eerst een DNS-naam toe aan het openbare IP-adres. Zie Een volledig gekwalificeerde domeinnaam maken in Azure Portal voor een Virtuele Windows-machine voor gedetailleerde stappen. Voer vervolgens de volgende opdracht uit:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
Voer in het virtuele netwerk of de implementatie de volgende opdracht uit:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<HOSTNAME>>" -port 5986 -Credential (Get-Credential) -useSSL -SessionOption $Skip
Notitie
Als u de vlag SkipCaCheck instelt, wordt de vereiste voor het importeren van een certificaat naar de VIRTUELE machine overgeslagen wanneer u de sessie start.
U kunt ook de cmdlet Invoke-Command gebruiken om een script op de virtuele machine op afstand uit te voeren.
Invoke-Command -ComputerName "<<COMPUTERNAME>" -ScriptBlock {"<<SCRIPT BLOCK>>"}
Extern register
Notitie
TCP-poort 135 of 445 moet geopend zijn om deze optie te kunnen gebruiken.
Voor Azure Resource Manager-VM's moet u poort 5986 openen op de NSG. Zie Beveiligingsgroepen voor meer informatie.
Voor RDFE-VM's moet u een eindpunt hebben met een privépoort 5986 en een openbare poort. U moet die openbare poort ook openen op de NSG.
Open de registereditor (regedit.exe) vanuit een andere VIRTUELE machine in hetzelfde virtuele netwerk.
Selecteer File>Connect Network Registry.
Zoek de doel-VM op hostnaam of dynamisch IP-adres (bij voorkeur) door deze in te voeren in het vak Voer de objectnaam in om het selectievakje in te schakelen.
Voer de referenties voor de doel-VM in.
Breng de benodigde registerwijzigingen aan.
Console voor externe services
Notitie
TCP-poorten 135 of 445 moeten geopend zijn om deze optie te kunnen gebruiken.
Voor Azure Resource Manager-VM's moet u poort 5986 openen op de NSG. Zie Beveiligingsgroepen voor meer informatie.
Voor RDFE-VM's moet u een eindpunt hebben met een privépoort 5986 en een openbare poort. U moet die openbare poort ook openen op de NSG.
Open vanuit een andere virtuele machine in hetzelfde virtuele netwerk een exemplaar van Services.msc.
Klik met de rechtermuisknop op Services (lokaal).
Selecteer Verbinding maken met een andere computer.
Voer het dynamische IP-adres van de doel-VM in.
Breng de benodigde wijzigingen aan in de services.
Volgende stappen
- Zie Enter-PSSession voor meer informatie over de Enter-PSSession-cmdlet.
- Zie Aangepaste scriptextensie voor Windows voor meer informatie over de aangepaste scriptextensie voor Windows met het klassieke implementatiemodel.
- PsExec maakt deel uit van de PSTools Suite.
- Zie PSTools voor meer informatie over de PSTools Suite.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.