Externe hulpprogramma's gebruiken om problemen met Azure-VM's op te lossen
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 rdp (Remote Desktop Protocol).
Seriële console
Gebruik een seriële console voor Azure Virtual Machines om opdrachten uit te voeren op de externe Azure-VM.
Externe CMD
Download PsExec. Maak verbinding met de VM door de volgende opdracht uit te voeren:
psexec \\<computer>-u user -s cmd
Opmerking
- 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 op de firewall zijn geopend.
Opdracht uitvoeren
Zie PowerShell-scripts uitvoeren op uw Windows-VM met opdracht uitvoeren voor meer informatie over het gebruik van de functie run command om scripts uit te voeren op de VM.
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 VM.
De extensie is niet eerder geïnstalleerd op de VM.
De extensie injecteert het script alleen de eerste keer dat het wordt gebruikt. Als u deze functie later gebruikt, wordt door de extensie herkend dat deze al is gebruikt en wordt het nieuwe script niet geüpload.
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 VM.
Voor vm's van het klassieke implementatiemodel
Belangrijk
Klassieke VM's worden op 1 september 2023 buiten gebruik gesteld
Als u IaaS-resources van ASM gebruikt, moet u de migratie voor 1 september 2023 voltooien. We raden u aan om sneller over te schakelen om te profiteren van de vele functieverbeteringen in Azure Resource Manager.
Zie Uw IaaS-resources migreren naar Azure Resource Manager op 1 september 2023 voor meer informatie.
#Set up the basic variables.
$subscriptionID = "<<SUBSCRIPTION ID>>"
$storageAccount = "<<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>>"
$vmCloudService = "<<CLOUD SERVICE>>" #Resource group or cloud service where the VM is hosted. For example, for "demo305.cloudapp.net" the cloud service is going to be demo305.
#Set up the Azure PowerShell module, and ensure the access to the subscription.
Import-Module Azure
Add-AzureAccount #Ensure login with the account associated with the subscription ID.
Get-AzureSubscription -SubscriptionId $subscriptionID | Select-AzureSubscription
#Set up the access to the storage account, and upload the script.
$storageKey = (Get-AzureStorageKey -StorageAccountName $storageAccount).Primary
$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.
$vm = Get-AzureVM -ServiceName $vmCloudService -Name $vmName
Set-AzureVMCustomScriptExtension "CustomScriptExtension" -VM $vm -StorageAccountName $storageAccount -StorageAccountKey $storagekey -ContainerName $container -FileName $blobName -Run $blobName | Update-AzureVM
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
Opmerking
TCP-poort 5986 (HTTPS) moet zijn geopend, 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 ook die openbare poort op de NSG openen.
De clientcomputer instellen
Als u PowerShell wilt gebruiken om op afstand verbinding te maken met de VM, moet u eerst de clientcomputer instellen om de verbinding toe te staan. Hiervoor 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 VM
Voor VM's 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 gebruikt u uitvoeropdrachten vanuit de portal om het script EnableRemotePS 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
Voeg voor een Azure Resource Manager-VM eerst een DNS-naam toe aan het openbare IP-adres. Zie Een volledig gekwalificeerde domeinnaam maken in de Azure Portal voor een Windows-VM 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
Opmerking
Als u de vlag SkipCaCheck instelt, wordt de vereiste voor het importeren van een certificaat naar de VM 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
Opmerking
TCP-poort 135 of 445 moet zijn geopend 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 ook die openbare poort openen op de NSG.
Open vanaf een andere VM in hetzelfde virtuele netwerk de register-editor (regedit.exe).
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 te selecteren .
Voer de referenties voor de doel-VM in.
Breng de benodigde registerwijzigingen aan.
Externe services-console
Opmerking
TCP-poorten 135 of 445 moeten zijn geopend 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 ook die openbare poort openen op de NSG.
Open vanuit een andere VM 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 cmdlet Enter-PSSession.
- Zie Aangepaste scriptextensie voor Windows voor meer informatie over de aangepaste scriptextensie voor Windows met behulp van 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 Feedback-community van Azure.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor