Partager via


Gérer et entretenir l’agent Connected Machine

Après avoir déployé l’agent Azure Connected Machine, vous devrez peut-être reconfigurer l’agent, le mettre à niveau, le supprimer ou apporter d’autres modifications. Ces tâches de maintenance de routine peuvent être effectuées manuellement. Vous pouvez également activer les mises à niveau automatiques de l’agent (préversion) ou rechercher d’autres emplacements pour automatiser les tâches, ce qui réduit les erreurs opérationnelles et les dépenses.

Cet article explique comment effectuer différentes opérations liées à l’agent Connected Machine et à vos serveurs avec Arc.

Conseil / Astuce

Pour obtenir des informations de référence sur la ligne de commande, consultez la azcmagentdocumentation CLI.

Installer une version spécifique de l’agent

Nous vous recommandons généralement d’utiliser la version la plus récente de l’agent Azure Connected Machine. Toutefois, si vous devez exécuter une version antérieure de l’agent pour une raison quelconque, désinstallez la version actuelle, puis installez la version cible. Si votre machine est déjà connectée à Azure Arc, vous n’avez pas besoin de déconnecter la machine. Seules les versions de l’agent Connected Machine publiées au cours de l’année écoulée sont officiellement prises en charge par le groupe de produits.

Suivez ces instructions pour installer une version spécifique de l’agent Azure Connected Machine.

Vous trouverez des liens vers des versions des agents Windows sous le titre de chaque note de publication. Si vous recherchez une version de l’agent qui a plus de six mois, consultez l’archive des notes de publication.

Mettre à niveau l’agent

L’agent Azure Connected Machine est mis à jour régulièrement pour résoudre les correctifs de bogues, les améliorations de stabilité et les nouvelles fonctionnalités. Azure Advisor identifie les ressources qui n’utilisent pas la dernière version de l’agent d’ordinateur et vous recommande d’effectuer une mise à niveau vers la dernière version. Il vous avertit lorsque vous sélectionnez le serveur avec Azure Arc en présentant une bannière sur la page Vue d’ensemble , ou lorsque vous accédez à Advisor via le portail Azure.

L’agent Azure Connected Machine pour Windows et Linux peut être mis à niveau vers la dernière version manuellement ou automatiquement, en fonction de vos besoins. L’installation, la mise à niveau ou la désinstallation de l’agent De machine connectée Azure ne vous oblige pas à redémarrer votre serveur.

Mise à niveau automatique de l’agent (préversion)

À compter de la version 1.57 de l’agent Azure Connected Machine, vous pouvez configurer l’agent pour qu’il se met automatiquement à niveau vers la dernière version. Cette fonctionnalité est actuellement en préversion publique et est disponible uniquement dans le cloud public Azure.

Lorsque vous activez les mises à niveau automatiques, votre agent est programmé pour être mis à niveau dans la version la plus récente. Pour maintenir la stabilité entre les régions et réduire les interruptions, les mises à niveau sont déployées par lots, avec toutes les mises à niveau lancées pendant les heures creuses. Si la mise à niveau ne s’effectue pas correctement, l’agent réexécrit régulièrement la mise à niveau automatique jusqu’à ce qu’elle réussisse.

Pour activer les mises à niveau automatiques, définissez la enableAutomaticUpgrade propriété à true l’aide d’Azure CLI (Windows ou Linux) ou d’Azure PowerShell.

L’exemple suivant montre comment configurer des mises à niveau automatiques d’agents avec Azure CLI.

# Set your target subscription
az account set --subscription "YOUR SUBSCRIPTION"

# Enable automatic upgrades on a single Arc-enabled server
az rest 
--method PATCH 
--url "https://management.azure.com/subscriptions/<SUB_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.HybridCompute/machines/<MACHINE_NAME>?api-version=2024-05-20-preview" 
--headers "Content-Type=application/json" 
--body '{"properties":{"agentUpgrade":{"enableAutomaticUpgrade":true}}}'

L’exemple suivant montre comment configurer des mises à niveau automatiques d’agents à l’aide de PowerShell.

Set-AzContext -Subscription "YOUR SUBSCRIPTION"

$params = @{
  ResourceGroupName = "YOUR RESOURCE GROUP"
  ResourceProviderName = "Microsoft.HybridCompute"
  ResourceType = "Machines"
  ApiVersion = "2024-05-20-preview"
  Name = "YOUR MACHINE NAME"
  Method = "PATCH"
  Payload = '{"properties":{"agentUpgrade":{ "enableAutomaticUpgrade":true}}}'
}
Invoke-AzRestMethod @params

Autres méthodes de mise à niveau d’agent

Le tableau suivant décrit les méthodes supplémentaires prises en charge pour effectuer les mises à niveau des agents :

Système d’exploitation Méthode de mise à niveau
Fenêtres Manuellement
Microsoft Update
Ubuntu apt
Red Hat/Oracle Linux/Amazon Linux yum
SUSE Linux Enterprise Server zypper

La dernière version de l’agent Azure Connected Machine pour les machines Windows peut être obtenue à partir des éléments suivants :

Configuration de Microsoft Update

La méthode recommandée pour maintenir à jour la version de l’agent Windows consiste à obtenir automatiquement la dernière version via Microsoft Update. Cela vous permet d’utiliser votre infrastructure de mise à jour existante (par exemple, Microsoft Configuration Manager ou Windows Server Update Services) et d’inclure les mises à jour d’Azure Connected Machine Agent avec votre planification régulière des mises à jour du système d’exploitation.

Windows Server ne vérifie pas les mises à jour dans Microsoft Update par défaut. Pour recevoir des mises à jour automatiques pour l’agent Azure Connected Machine Agent, vous devez configurer le client Windows Update sur l’ordinateur pour rechercher d’autres produits Microsoft.

Pour les serveurs Windows appartenant à un groupe de travail et se connectant à Internet pour rechercher les mises à jour, vous pouvez activer Microsoft Update en exécutant les commandes suivantes dans PowerShell en tant qu’administrateur :

$ServiceManager = (New-Object -com "Microsoft.Update.ServiceManager")
$ServiceID = "7971f918-a847-4430-9279-4a52d1efe18d"
$ServiceManager.AddService2($ServiceId,7,"")

Pour que des serveurs Windows appartenant à un domaine se connectent à Internet pour vérifier les mises à jour, vous pouvez configurer ce paramètre à l’échelle en utilisant la Group Policy :

  1. Connectez-vous à un ordinateur utilisé pour l’administration du serveur avec un compte qui peut gérer les objets de stratégie de groupe (GPO) de votre organisation.
  2. Ouvrez la console de gestion des stratégies de groupe.
  3. Développez la forêt, le domaine et l’unité d’organisation pour sélectionner l’étendue appropriée pour votre nouvelle GPO. Si vous avez déjà un objet GPO que vous souhaitez modifier, passez à l’étape 6.
  4. Cliquez avec le bouton droit sur le conteneur et sélectionnez Créer un objet GPO dans ce domaine, et le lier ici….
  5. Indiquez un nom pour votre stratégie, par exemple « Activer Microsoft Update ».
  6. Cliquez avec le bouton droit sur la stratégie, puis sélectionnez Modifier.
  7. Accédez à Configuration de l'ordinateur > Modèles d'administration > Composants Windows > Windows Update.
  8. Sélectionnez le paramètre Configurer les mises à jour automatiques pour le modifier.
  9. Sélectionnez la case d’option Activé pour permettre à la stratégie d’entrer en vigueur.
  10. En bas de la section Options , cochez la case Pour installer les mises à jour d’autres produits Microsoft en bas.
  11. Cliquez sur OK.

La prochaine fois que les ordinateurs de votre étendue sélectionnée actualisent leur stratégie, ils commencent à rechercher les mises à jour dans Windows Update et Microsoft Update.

Pour que les organisations qui utilisent Microsoft Configuration Manager ou Windows Server Update Services (WSUS) fournissent des mises à jour à leurs serveurs, vous devez configurer WSUS pour synchroniser les packages Azure Connected Machine Agent et les approuver pour l’installation sur vos serveurs. Suivez les instructions pour Windows Server Update Services ou Configuration Manager pour ajouter les produits et classifications suivants à votre configuration :

  • Nom du produit : Azure Connected Machine Agent (sélectionnez toutes les sous-options)
  • Classifications : mises à jour critiques, mises à jour

Une fois les mises à jour synchronisées, vous pouvez éventuellement ajouter le produit Azure Connected Machine Agent à vos règles d’autorisation automatique afin que vos serveurs restent automatiquement à jour avec le logiciel d’agent le plus récent.

Pour effectuer une mise à niveau manuelle à l’aide de l’Assistant Installation

  1. Connectez-vous à l’ordinateur avec un compte disposant de droits d’administration.
  2. Téléchargez le programme d’installation de l’agent le plus récent à partir de https://aka.ms/AzureConnectedMachineAgent
  3. Exécutez AzureConnectedMachineAgent.msi pour démarrer l’Assistant Installation.

Si l’Assistant Installation découvre une version précédente de l’agent, elle la met à niveau automatiquement. Une fois la mise à niveau terminée, l’Assistant Installation se ferme automatiquement.

Pour effectuer une mise à niveau à partir de la ligne de commande

Si vous ne connaissez pas les options de ligne de commande des packages Windows Installer, passez en revue les options de ligne de commande standard msiexec et les options de ligne de commande Msiexec.

  1. Connectez-vous à la machine avec un compte disposant des droits d’administration.

  2. Téléchargez le programme d’installation de l’agent le plus récent à partir de https://aka.ms/AzureConnectedMachineAgent

  3. Pour mettre à niveau l’agent en mode silencieux et créer un fichier journal d’installation dans le C:\Support\Logs dossier, exécutez la commande suivante :

    msiexec.exe /i AzureConnectedMachineAgent.msi /qn /l*v "C:\Support\Logs\azcmagentupgradesetup.log"
    

Désinstaller l’agent

Pour les serveurs que vous ne souhaitez plus gérer avec les serveurs avec Azure Arc, procédez comme suit pour supprimer les extensions de machine virtuelle du serveur, déconnecter l’agent et désinstaller le logiciel de votre serveur. Il est important d’effectuer toutes ces étapes pour supprimer entièrement tous les composants logiciels associés de votre système.

Supprimer les extensions de machine virtuelle

Si vous avez déployé des extensions de machine virtuelle Azure sur un serveur avec Azure Arc, vous devez désinstaller toutes les extensions avant de déconnecter l’agent ou de désinstaller le logiciel. La désinstallation de l’agent Azure Connected Machine ne supprime pas automatiquement les extensions et ces extensions ne sont pas reconnues si vous reconnectez le serveur à Azure Arc.

Pour obtenir des conseils pour répertorier et supprimer des extensions sur votre serveur avec Azure Arc, consultez les ressources suivantes :

Déconnecter le serveur d’Azure Arc

Après avoir supprimé toutes les extensions de votre serveur, l’étape suivante consiste à déconnecter l’agent. Cela supprime la ressource Azure correspondante pour le serveur et efface l’état local de l’agent.

Pour déconnecter l’agent, exécutez la azcmagent disconnect commande en tant qu’administrateur sur le serveur. Vous êtes invité à vous connecter avec un compte Azure autorisé à supprimer la ressource dans votre abonnement. Si la ressource a déjà été supprimée dans Azure, transmettez un indicateur supplémentaire pour nettoyer l’état local : azcmagent disconnect --force-local-only.

Si vos comptes Administrateur et Azure sont différents, vous pouvez rencontrer des problèmes avec l’invite de connexion par défaut au compte Administrateur. Pour résoudre ces problèmes, exécutez la azcmagent disconnect --use-device-code commande. Vous êtes invité(e) à vous connecter avec un compte Azure autorisé à supprimer la ressource.

Avertissement

Lors de la déconnexion de l’agent des VMs compatibles Arc exécutées sur Azure Local, utilisez uniquement la commande azcmagent disconnect --force-local-only. L’utilisation de la commande sans l’indicateur –force-local-only peut entraîner la suppression de votre machine virtuelle Arc sur Azure Local, aussi bien sur Azure qu’en local.

Désinstaller l’agent

Enfin, vous pouvez supprimer l’agent Connected Machine du serveur.

Les deux méthodes suivantes suppriment l’agent, mais elles ne suppriment pas le dossier C :\Program Files\AzureConnectedMachineAgent sur la machine.

Désinstaller depuis le Panneau de configuration

Procédez comme suit pour désinstaller l’agent Windows de l’ordinateur :

  1. Connectez-vous à la machine avec un compte disposant des autorisations d’administration.
  2. Dans le panneau de configuration, sélectionnez Programmes et fonctionnalités.
  3. Dans Programmes et fonctionnalités, sélectionnez Agent De machine connectée Azure, Désinstallez, puis Oui.

Vous pouvez également supprimer l’agent Windows directement à partir de l’Assistant d'installation de l’agent. Exécutez le package d’installationAzureConnectedMachineAgent.msi pour ce faire.

Désinstaller à partir de la ligne de commande

Vous pouvez désinstaller l’agent manuellement à partir de l’invite de commandes ou à l’aide d’une méthode automatisée (par exemple, un script) en suivant l’exemple ci-dessous. Tout d’abord, vous devez récupérer le code de produit, qui est un GUID qui est l’identificateur principal du package d’application, à partir du système d’exploitation. La désinstallation est effectuée à l’aide de la ligne de commande Msiexec.exe - msiexec /x {Product Code}.

  1. Ouvrez l’Éditeur du Registre.

  2. Sous la clé de Registre HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall, recherchez et copiez le GUID du code du produit.

  3. Désinstallez l’agent à l’aide de Msiexec, comme dans les exemples suivants :

    • À partir de la ligne de commande, entrez la commande suivante :

      msiexec.exe /x {product code GUID} /qn
      
    • Vous pouvez effectuer les mêmes étapes à l’aide de PowerShell :

      Get-ChildItem -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall | `
      Get-ItemProperty | `
      Where-Object {$_.DisplayName -eq "Azure Connected Machine Agent"} | `
      ForEach-Object {MsiExec.exe /x "$($_.PsChildName)" /qn}
      

Mettre à jour ou supprimer des paramètres de proxy

Pour configurer l’agent pour communiquer avec le service via un serveur proxy ou pour supprimer cette configuration après le déploiement, utilisez l’une des méthodes décrites ici. L'agent communique en sortie en utilisant le protocole HTTP dans ce cas.

Les paramètres de proxy peuvent être configurés à l’aide de la commande ou des azcmagent config variables d’environnement système. Si un serveur proxy est spécifié à la fois dans la configuration de l’agent et les variables d’environnement système, la configuration de l’agent est prioritaire et devient le paramètre effectif. Permet azcmagent show d’afficher la configuration effective du proxy pour l’agent.

Remarque

Les serveurs avec Azure Arc ne prennent pas en charge l’utilisation de la passerelle Log Analytics en tant que proxy pour l’agent Connected Machine.

Configuration de proxy spécifique à l’agent

La configuration de proxy spécifique à l’agent est la meilleure façon de configurer les paramètres du serveur proxy. Cette méthode est disponible à partir de la version 1.13 de l’agent Azure Connected Machine. L’utilisation de la configuration de proxy spécifique à l’agent permet d’empêcher les paramètres de proxy de l’agent Azure Connected Machine d’interférer avec d’autres applications sur votre système.

Remarque

Certaines extensions déployées sur des serveurs avec Azure Arc n’héritent pas de la configuration de proxy spécifique à l’agent. Pour obtenir des conseils sur la configuration des paramètres de proxy pour les extensions, consultez la documentation de chaque extension que vous déployez.

Pour configurer l’agent pour communiquer via un serveur proxy, exécutez la commande suivante :

azcmagent config set proxy.url "http://ProxyServerFQDN:port"

Vous pouvez utiliser une adresse IP ou un nom d’hôte simple à la place du nom de domaine complet si votre réseau l’exige. Si votre serveur proxy s’exécute sur le port 80, vous pouvez omettre « :80 » à la fin.

Pour vérifier si une URL de serveur proxy est configurée dans les paramètres de l’agent, exécutez la commande suivante :

azcmagent config get proxy.url

Pour empêcher l’agent de communiquer via un serveur proxy, exécutez la commande suivante :

azcmagent config clear proxy.url

Vous n’avez pas besoin de redémarrer les services lors de la reconfiguration des paramètres de proxy avec la azcmagent config commande.

Contournement du proxy pour les points de terminaison privés

À compter de l’agent version 1.15, vous pouvez également spécifier des services qui ne doivent pas utiliser le serveur proxy spécifié. Cela peut vous aider à créer des conceptions réseau fractionnées et des scénarios de point de terminaison privé dans lesquels vous souhaitez que l’ID Microsoft Entra et le trafic Azure Resource Manager passent par votre serveur proxy vers des points de terminaison publics, mais que vous souhaitez que le trafic Azure Arc ignore le proxy et communique avec une adresse IP privée sur votre réseau.

La fonctionnalité de contournement du proxy ne vous oblige pas à entrer des URL spécifiques à contourner. Au lieu de cela, vous fournissez le nom des services qui ne doivent pas utiliser le serveur proxy. Le paramètre d’emplacement fait référence à la région Azure du serveur avec Arc.

Quand la valeur de contournement de proxy est définie sur ArcData, seul le trafic de l’extension Azure pour SQL Server est contourné, pas celui de l’agent Arc.

Valeur de contournement de proxy Points de terminaison affectés
AAD login.windows.net
login.microsoftonline.com
pas.windows.net
ARM management.azure.com
AMA global.handler.control.monitor.azure.com
<virtual-machine-region-name>.handler.control.monitor.azure.com
<log-analytics-workspace-id>.ods.opinsights.azure.com
management.azure.com
<virtual-machine-region-name>.monitoring.azure.com
<data-collection-endpoint>.<virtual-machine-region-name>.ingest.monitor.azure.com
Arc his.arc.azure.com
guestconfiguration.azure.com
ArcData 1 *.<region>.arcdataservices.com

1 La valeur ArcData de contournement du proxy est disponible à partir de l’agent Azure Connected Machine version 1.36 et de l’extension Azure pour SQL Server version 1.1.2504.99. Les versions antérieures incluent le serveur SQL Server activé par les points de terminaison Azure Arc dans la valeur de contournement du proxy « Arc ».

Pour envoyer l’ID Microsoft Entra et le trafic Azure Resource Manager via un serveur proxy, mais ignorez le proxy pour le trafic Azure Arc, exécutez la commande suivante :

azcmagent config set proxy.url "http://ProxyServerFQDN:port"
azcmagent config set proxy.bypass "Arc"

Pour fournir une liste de services, séparez les noms de service par des virgules :

azcmagent config set proxy.bypass "ARM,Arc"

Pour effacer le contournement du proxy, exécutez la commande suivante :

azcmagent config clear proxy.bypass

Vous pouvez afficher la configuration effective du serveur proxy et du contournement du proxy en exécutant azcmagent show.

Variables d’environnement Windows

Sur Windows, l’agent Azure Connected Machine vérifie d’abord la propriété de configuration de l’agent (à compter de l’agent proxy.url version 1.13), puis la variable d’environnement à l’échelle HTTPS_PROXY du système, pour déterminer le serveur proxy à utiliser. Si les deux sont vides, aucun serveur proxy n’est utilisé, même si le paramètre proxy à l’échelle du système Windows par défaut est configuré.

Nous vous recommandons d’utiliser la configuration de proxy spécifique à l’agent au lieu de la variable d’environnement système.

Pour définir la variable d’environnement du serveur proxy, exécutez les commandes suivantes :

# If a proxy server is needed, execute these commands with the proxy URL and port.
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://ProxyServerFQDN:port", "Machine")
$env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
# For the changes to take effect, the agent services need to be restarted after the proxy environment variable is set.
Restart-Service -Name himds, ExtensionService, GCArcService

Pour configurer l’agent pour arrêter la communication via un serveur proxy, exécutez les commandes suivantes :

[Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "Machine")
$env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
# For the changes to take effect, the agent services need to be restarted after the proxy environment variable removed.
Restart-Service -Name himds, ExtensionService, GCArcService

Variables d’environnement Linux

Sur Linux, l’agent Azure Connected Machine vérifie d’abord la propriété de configuration de l’agent (à partir de l’agent proxy.url version 1.13), puis la HTTPS_PROXY variable d’environnement définie pour les démons himds, GC_Ext et GCArcService. Un script inclus configure les paramètres proxy par défaut de systemd afin que l’agent Azure Connected Machine et tous les autres services sur la machine utilisent un serveur proxy spécifié.

Pour configurer l’agent pour communiquer via un serveur proxy, exécutez la commande suivante :

sudo /opt/azcmagent/bin/azcmagent_proxy add "http://ProxyServerFQDN:port"

Pour supprimer la variable d’environnement, exécutez la commande suivante :

sudo /opt/azcmagent/bin/azcmagent_proxy remove

Migrer des variables d’environnement vers une configuration proxy spécifique à l’agent

Si vous utilisez déjà des variables d’environnement pour configurer le serveur proxy pour l’agent Azure Connected Machine et que vous souhaitez migrer vers la configuration de proxy spécifique à l’agent en fonction des paramètres de l’agent local, procédez comme suit :

  1. Mettez à niveau l’agent Azure Connected Machine vers la dernière version.

  2. Configurez l’agent avec les informations de votre serveur proxy en exécutant azcmagent config set proxy.url "http://ProxyServerFQDN:port".

  3. Supprimez les variables d’environnement inutilisées en suivant les étapes pour Windows ou Linux.

Renommer une ressource de serveur avec Azure Arc

Lorsque vous modifiez le nom d’une machine Linux ou Windows connectée à des serveurs avec Azure Arc, le nouveau nom n’est pas reconnu automatiquement, car le nom de la ressource dans Azure est immuable. Comme avec d’autres ressources Azure, pour utiliser le nouveau nom, vous devez supprimer la ressource dans Azure, puis la recréer.

Pour les serveurs avec Azure Arc, avant de renommer la machine, vous devez supprimer les extensions de machine virtuelle :

  1. Répertoriez les extensions VM installées sur la machine et notez leur configuration à l’aide du portail Azure, de l’interface CLI Azure ou d’Azure PowerShell.

  2. Supprimez toutes les extensions de machine virtuelle installées sur la machine à l’aide du portail Azure, d’Azure CLI ou d’Azure PowerShell.

  3. Utilisez l'outil azcmagent avec le paramètre Déconnexion pour déconnecter la machine de Azure Arc et supprimer la ressource de la machine d'Azure. Vous pouvez exécuter cet outil manuellement tout en vous connectant de manière interactive, avec un jeton d’accès aux identités Microsoft ou avec un principal de service.

    Déconnecter la machine des serveurs compatibles Azure Arc ne supprime pas l'agent de machine connectée, et vous n'avez pas besoin de supprimer l'agent dans le cadre de ce processus.

  4. Réinscrivez l’agent Connected Machine auprès des serveurs avec Azure Arc. Exécutez l’outil azcmagent avec le paramètre Connect pour effectuer cette étape. L’agent utilise par défaut le nom d’hôte actuel de l’ordinateur, mais vous pouvez choisir votre propre nom de ressource en transmettant le --resource-name paramètre à la commande de connexion.

  5. Redistribuer les extensions de la machine virtuelle qui ont été initialement déployées sur la machine à partir des serveurs activés par Azure Arc. Si vous avez déployé l’agent Azure Monitor pour machines virtuelles (insights) à l’aide d’une définition Azure Policy, les agents sont redéployés après le prochain cycle d’évaluation.

Investiguez la déconnexion du serveur avec Azure Arc

L’agent Connected Machine envoie un message de pulsation régulier à Azure toutes les cinq minutes. Si un serveur avec Arc cesse d’envoyer des pulsations à Azure pendant plus de 15 minutes, cela peut signifier que le serveur est hors connexion, que la connexion réseau est bloquée ou que l’agent n’est pas en cours d’exécution.

Développez un plan de réponse et d’examen de ces incidents, notamment la configuration d’alertes Resource Health pour être averti lorsque de tels incidents se produisent. Pour plus d’informations, consultez Créer des alertes Resource Health dans le portail Azure.]

Supprimer les ressources de serveur obsolètes

Si un serveur est désactivé ou déconnecté sans supprimer l’agent, la ressource reste généralement dans le portail Azure avec un état « Déconnecté ». Au fil du temps, ces ressources obsolètes peuvent encombrer votre environnement.

Le script PowerShell suivant vous permet d’identifier et de supprimer des serveurs avec Azure Arc qui ont été déconnectés pendant un nombre spécifié de jours.

Prerequisites

  • Azure PowerShell : module Az installé.
  • Autorisations : accès en lecture pour interroger via Azure Resource Graph, et Contributeur/Propriétaire (ou Microsoft.HybridCompute/machines/delete) pour supprimer les ressources.

Script de nettoyage

Ce script utilise Azure Resource Graph pour interroger Microsoft.HybridCompute/machines les ressources où l’état est Disconnected et l’horodatage lastStatusChange est antérieur au seuil configuré.

Enregistrez le code suivant sous Cleanup-StaleArcServers.ps1.

<#
.SYNOPSIS
    Identifies and removes stale Azure Arc-enabled servers that have been disconnected for a specified number of days.

.DESCRIPTION
    This script queries Azure Resource Graph to find Azure Arc-enabled servers (Microsoft.HybridCompute/machines)
    that have a status of 'Disconnected' and have not updated their status for more than the specified number of days.
    It supports a -WhatIf parameter to preview the resources that would be deleted.

.PARAMETER DaysDisconnected
    The number of days a server must be disconnected to be considered stale. Default is 60.

.PARAMETER Scope
    Optional. The scope to query (e.g., a specific Subscription ID or Management Group ID). 
    If not specified, queries all subscriptions the current context has access to.

.PARAMETER WhatIf
    If specified, the script will only list the resources specifically targeting for deletion without actually deleting them.

.EXAMPLE
    .\Cleanup-StaleArcServers.ps1 -DaysDisconnected 60 -WhatIf
    Lists Arc servers disconnected for more than 60 days.

.EXAMPLE
    .\Cleanup-StaleArcServers.ps1 -DaysDisconnected 90
    Permanently deletes Arc servers disconnected for more than 90 days.

.NOTES
    Author: Microsoft
    Date: 2026-01-12
    Requires: Az.ResourceGraph, Az.Resources
#>

param (
    [int]$DaysDisconnected = 60,
    
    [string]$Scope,

    [switch]$WhatIf
)

# Check for Azure connection
try {
    $context = Get-AzContext -ErrorAction Stop
    Write-Host "Connected to Azure context: $($context.Name)" -ForegroundColor Cyan
}
catch {
    Write-Error "Not connected to Azure. Please run 'Connect-AzAccount' first."
    exit
}

# Construct the KQL query
# We look for resources of type hybridcompute/machines
# Status must be Disconnected
# lastStatusChange must be older than $DaysDisconnected
$kqlQuery = @"
Resources
| where type == 'microsoft.hybridcompute/machines'
| where properties.status == 'Disconnected'
| where properties.lastStatusChange < ago($($DaysDisconnected)d)
| project id, name, resourceGroup, subscriptionId, location, status = properties.status, lastStatusChange = properties.lastStatusChange
"@

Write-Host "Searching for Arc servers disconnected for more than $DaysDisconnected days..." -ForegroundColor Yellow

# Execute Search
$params = @{
    Query = $kqlQuery
}

if (-not [string]::IsNullOrWhiteSpace($Scope)) {
    $params.Add('Scope', $Scope)
}

try {
    $staleServers = Search-AzGraph @params -ErrorAction Stop
}
catch {
    Write-Error "Failed to query Azure Resource Graph. Ensure resource graph module is installed and you have read permissions.`nError: $_"
    exit
}

if ($staleServers.Count -eq 0) {
    Write-Host "No stale Arc servers found matching the criteria." -ForegroundColor Green
    exit
}

Write-Host "Found $($staleServers.Count) stale servers." -ForegroundColor Yellow

# Process results
foreach ($server in $staleServers) {
    $message = "Deleting '$($server.name)' in RG '$($server.resourceGroup)' (Disconnected since: $($server.lastStatusChange))"
    
    if ($WhatIf) {
        Write-Host "[WhatIf] $message" -ForegroundColor Cyan
    }
    else {
        Write-Host $message -ForegroundColor White
        try {
            Remove-AzResource -ResourceId $server.id -Force -ErrorAction Stop
            Write-Host "Successfully deleted '$($server.name)'." -ForegroundColor Green
        }
        catch {
            Write-Error "Failed to delete '$($server.name)'. Error: $_"
        }
    }
}

if ($WhatIf) {
    Write-Host "`n[WhatIf] Run completed. No resources were deleted. Remove -WhatIf to execute deletion." -ForegroundColor Cyan
}
else {
    Write-Host "`nCleanup completed." -ForegroundColor Green
}

Utilisation du script

  1. Connexion à Azure

    Ouvrez votre terminal PowerShell et connectez-vous.

    Connect-AzAccount
    
  2. Exécuter une analyse de What-If

    Commencez par exécuter le script avec le -WhatIf commutateur. Cela répertorie les serveurs qui répondent aux critères sans les supprimer réellement. Cette commande vérifie les serveurs qui ont été déconnectés pendant 60 jours ou plus.

    .\Cleanup-StaleArcServers.ps1 -DaysDisconnected 60 -WhatIf
    

    Passez en revue la sortie pour vous assurer que seuls les serveurs prévus sont répertoriés.

  3. Effectuer le nettoyage

    Une fois que vous êtes confiant dans la liste des serveurs à supprimer, exécutez le script sans le commutateur.

    .\Cleanup-StaleArcServers.ps1 -DaysDisconnected 60
    

    Pour nettoyer les serveurs déconnectés pendant une période plus longue (par exemple, 6 mois), augmentez le nombre de jours :

    .\Cleanup-StaleArcServers.ps1 -DaysDisconnected 180