Partager via


Utiliser des outils à distance pour résoudre les problèmes de machine virtuelle Azure

S’applique à : ✔️ Machine virtuelles Windows

Quand vous résolvez des problèmes sur une machine virtuelle Azure, vous pouvez vous connecter à celle-ci à l’aide des outils à distance qui sont abordés dans cet article au lieu d’utiliser le protocole RDP (Remote Desktop Protocol).

Console série

Utilisez une console série pour machines virtuelles Azure afin d’exécuter des commandes sur la machine virtuelle Azure distante.

CMD à distance

Téléchargez PsExec. Connectez-vous à la machine virtuelle en exécutant la commande suivante :

psexec \\<computer>-u user -s cmd

Note

  • Cette commande doit être exécutée sur un ordinateur figurant dans le même réseau virtuel.
  • Vous pouvez utiliser DIP ou HostName pour remplacer <computer>.
  • Le paramètre -s permet de s’assurer que la commande est appelée à l’aide du compte système (autorisation d’administrateur).
  • PsExec utilise les ports TCP 135 et 445. Par conséquent, ces deux ports doivent être ouverts sur le pare-feu.

Exécutez la commande

Pour plus d’informations sur la façon d’utiliser la fonctionnalité Run Command pour exécuter des scripts sur la machine virtuelle, consultez Exécuter des scripts PowerShell dans votre machine virtuelle Windows à l’aide de Run Command.

Extension de script personnalisé

Vous pouvez utiliser la fonctionnalité Extension de script personnalisé pour exécuter un script personnalisé sur la machine virtuelle cible. Pour utiliser cette fonctionnalité, les conditions suivantes doivent être remplies :

  • La machine virtuelle dispose d’une connectivité

  • L’agent de machine virtuelle Azure est installé et fonctionne comme prévu sur la machine virtuelle.

  • L’extension n’a encore jamais été installée sur la machine virtuelle.

    L’extension injecte le script uniquement la première fois qu’elle est utilisée. Si vous utilisez cette fonctionnalité ultérieurement, l’extension reconnaît qu’elle a déjà été utilisée et ne charge pas le nouveau script.

Chargez votre script sur un compte de stockage et générez son propre conteneur. Ensuite, exécutez le script suivant dans Azure PowerShell sur un ordinateur qui dispose d’une connectivité à la machine virtuelle.

Pour les machines virtuelles Azure Resource Manager

#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

PowerShell à distance

Note

Le port TCP 5986 (HTTPS) doit être ouvert pour que vous puissiez utiliser cette option.

Pour les machines virtuelles Azure Resource Manager, vous devez ouvrir le port 5986 sur le groupe de sécurité réseau (NSG). Pour plus d’informations, consultez Groupes de sécurité.

Pour les machines virtuelles RDFE, vous devez avoir un point de terminaison ayant un port privé (5986) et un port public. Ensuite, vous devez également ouvrir ce port public sur le groupe de sécurité réseau.

Configurer l’ordinateur client

Pour utiliser PowerShell pour vous connecter à distance à la machine virtuelle, vous devez d’abord configurer l’ordinateur client afin d’autoriser la connexion. Pour ce faire, ajoutez la machine virtuelle à la liste des hôtes approuvés PowerShell en exécutant la commande suivante, selon le cas.

Pour ajouter une machine virtuelle à la liste des hôtes approuvés :

Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName>

Pour ajouter plusieurs machines virtuelles à la liste des hôtes approuvés :

Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName1>,<ComputerName2>

Pour ajouter tous les ordinateurs à la liste des hôtes approuvés :

Set-Item wsman:\localhost\Client\TrustedHosts -value *

Activer RemotePS sur la machine virtuelle

Pour les machines virtuelles créées à l’aide du modèle de déploiement classique, utilisez l’extension de script personnalisé pour exécuter le script suivant :

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

Pour les machines virtuelles Azure Resource Manager, utilisez les commandes d’exécution à partir du portail pour exécuter le script EnableRemotePS :

Capture d’écran de la procédure d’exécution du script EnableRemotePS à partir du portail.

Connexion à la machine virtuelle

Exécutez la commande suivante en fonction de l’emplacement de l’ordinateur client :

  • En dehors du réseau virtuel ou du déploiement

    • Pour une machine virtuelle créée à l’aide du modèle de déploiement classique, exécutez la commande suivante :

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName  "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
    • Pour une machine virtuelle Azure Resource Manager, commencez par ajouter un nom DNS à l’adresse IP publique. Pour obtenir des étapes détaillées, consultez Créer un nom de domaine complet dans le portail Azure pour une machine virtuelle Windows. Ensuite, exécutez la commande suivante :

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
  • Dans le réseau virtuel ou le déploiement, exécutez la commande suivante :

    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
    Enter-PSSession -ComputerName  "<<HOSTNAME>>" -port 5986 -Credential (Get-Credential) -useSSL -SessionOption $Skip
    

Note

La définition de l’indicateur SkipCaCheck contourne la nécessité d’importer un certificat sur la machine virtuelle quand vous démarrez la session.

Vous pouvez également utiliser l’applet de commande Invoke-Command pour exécuter un script à distance sur la machine virtuelle.

Invoke-Command -ComputerName "<<COMPUTERNAME>" -ScriptBlock {"<<SCRIPT BLOCK>>"}

Accès à distance au Registre

Note

Le port TCP 135 ou 445 doit être ouvert pour que vous puissiez utiliser cette option.

Pour les machines virtuelles Azure Resource Manager, vous devez ouvrir le port 5986 sur le groupe de sécurité réseau. Pour plus d’informations, consultez Groupes de sécurité.

Pour les machines virtuelles RDFE, vous devez avoir un point de terminaison ayant un port privé 5986 et un port public. Vous devez également ouvrir ce port public sur le groupe de sécurité réseau.

  1. À partir d’une autre machine virtuelle figurant dans le même réseau virtuel, ouvrez l’Éditeur du Registre (regedit.exe).

  2. Sélectionnez Fichier>Connexion au Registre réseau.

    Capture d’écran de l’option Connexion au Registre réseau… dans le menu Fichier de l’Éditeur du Registre

  3. Recherchez la machine virtuelle cible par nom d’hôte ou adresse IP dynamique (préférable) en l’entrant dans la zone Entrer le nom de l’objet à sélectionner.

    Capture d’écran de la zone Entrez le nom de l’objet à sélectionner dans la boîte de dialogue Sélectionner un ordinateur.

  4. Entrez les informations d’identification pour la machine virtuelle cible.

  5. Apportez les modifications nécessaires au Registre.

Console Services à distance

Note

Le port TCP 135 ou 445 doit être ouvert pour que vous puissiez utiliser cette option.

Pour les machines virtuelles Azure Resource Manager, vous devez ouvrir le port 5986 sur le groupe de sécurité réseau. Pour plus d’informations, consultez Groupes de sécurité.

Pour les machines virtuelles RDFE, vous devez avoir un point de terminaison ayant un port privé 5986 et un port public. Vous devez également ouvrir ce port public sur le groupe de sécurité réseau.

  1. À partir d’une autre machine virtuelle figurant dans le même réseau virtuel, ouvrez une instance de Services.msc.

  2. Cliquez avec le bouton droit sur Services (Local).

  3. Sélectionnez Se connecter à un autre ordinateur.

    Capture d’écran de l’option Se connecter à un autre ordinateur dans le menu contextuel de Services (local).

  4. Entrez l’adresse IP dynamique de la machine virtuelle cible.

    Capture d’écran de la zone de saisie d’adresse IP dynamique dans l’option Autre ordinateur de la boîte de dialogue Sélectionner un ordinateur.

  5. Apportez les modifications nécessaires aux services.

Prochaines étapes

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.