Delen via


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:

Schermopname van de stappen voor het uitvoeren van het EnableRemotePS-script vanuit de portal.

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.

  1. Open de registereditor (regedit.exe) vanuit een andere VIRTUELE machine in hetzelfde virtuele netwerk.

  2. Selecteer File>Connect Network Registry.

    Schermopname van het netwerkregister verbinden... optie in het menu Bestand van registereditor

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

    Schermopname van het vak Objectnaam invoeren dat u wilt selecteren in het dialoogvenster Computer selecteren.

  4. Voer de referenties voor de doel-VM in.

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

  1. Open vanuit een andere virtuele machine in hetzelfde virtuele netwerk een exemplaar van Services.msc.

  2. Klik met de rechtermuisknop op Services (lokaal).

  3. Selecteer Verbinding maken met een andere computer.

    Schermopname van de optie Verbinding maken met een andere computer in het snelmenu van Services (Lokaal).

  4. Voer het dynamische IP-adres van de doel-VM in.

    Schermopname van het dynamische IP-invoervak in de optie Een andere computer in het dialoogvenster Computer selecteren.

  5. Breng de benodigde wijzigingen aan in de services.

Volgende stappen

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.