Partager via


Demandes PowerShell pour la commande Run sur des serveurs avec Azure Arc (préversion)

À l’aide des commandes PowerShell pour la commande d’exécution de machine connectée, vous pouvez exécuter à distance et en toute sécurité des scripts ou des commandes sur des machines virtuelles avec Arc sans vous y connecter directement via le protocole BUREAU à distance ou SSH.

Cet article fournit des exemples qui utilisent plusieurs commandes PowerShell pour vous aider à comprendre comment utiliser PowerShell pour exécuter des scripts ou des commandes sur votre serveur avec Arc.

Conditions préalables

  • La version de l’agent Connected Machine sur le serveur avec Arc doit être 1.33 ou ultérieure.

Exemples de requêtes PowerShell

Les exemples suivants utilisent différentes commandes PowerShell pour manipuler des commandes d'exécution sur un serveur activé par Arc.

Exécuter un script sur une machine

Cette commande remet le script à la machine, l’exécute et retourne la sortie capturée.

New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "eastus" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"

Remarque

Vous pouvez ajouter plusieurs commandes dans le -SourceScript paramètre. Permet ; de séparer chaque commande. Exemple : –SourceScript "id; echo Hello World!"

Exécuter un script sur la machine à l’aide d’un fichier de script dans le stockage

Cette commande dirige Connected Machine Agent vers un URI de signature d’accès partagé (SAS) pour un objet blob de stockage où un script a été chargé, puis demande à l’agent d’exécuter le script et de renvoyer la sortie capturée.

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>”

Remarque

scriptUri est un URI de signature d’accès partagé (SAP) pour l’objet blob de stockage, et il doit fournir un accès en lecture à l’objet blob. Une heure d’expiration de 24 heures est suggérée pour l’URI SAP. Vous pouvez générer un URI SAS sur le portail Azure à l’aide des options d’objets blob ou d’un jeton SAS utilisant New-AzStorageBlobSASToken. Si vous générez un jeton SAS à l’aide de New-AzStorageBlobSASToken, le format d’URI SAS est : base blob URL + "?" + le jeton SAS à partir de New-AzStorageBlobSASToken.

Répertorier toutes les ressources de commande d'exécution déployées sur une machine

Cette commande retourne une liste complète des commandes Run Command précédemment déployées, ainsi que leurs propriétés.

Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"

Obtenir l’état et les résultats de l’exécution

Cette commande récupère la progression de l’exécution actuelle pour une commande Run, notamment la dernière sortie, l’heure de début/fin, le code de sortie et l’état terminal de l’exécution.

Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"

Obtenir des informations sur l'état d'une commande d'exécution via la Vue d'instance

Obtenez des informations sur l'état de la commande 'Run' pour une machine disposant de la vue d'instance. La vue d’instance contient l’état d’exécution de la commande Exécuter (réussie, ayant échoué, et ainsi de suite), le code de sortie, la sortie standard et l’erreur standard générées en exécutant le script. Un code de sortie différent de zéro indique une exécution infructueuse.

Get-AzConnectedMachineRunCommand -ResourceGroupName "MyRG" -MachineName "MyMachine" -RunCommandName "MyRunCommand"

En plus d’autres informations, la réponse retourne ces champs :

  • InstanceViewExecutionState : état du script de commande Run. Reportez-vous à cet état pour savoir si votre script a réussi ou non.

  • ProvisioningState : état de l’approvisionnement général des extensions de bout en bout (si la plateforme d’extension a pu déclencher ou non le script de commande Run).

Créer ou mettre à jour une commande d’exécution sur une machine et capturer des messages d’erreur standard et de sortie standard

Créez ou mettez à jour une commande Run sur une machine et diffusez en continu la sortie standard et des messages d’erreur standard vers des objets blob d’ajout de sortie et d’erreurs.

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" - MachineName "MyMachine" -RunCommandName "MyRunCommand3" -Location "eastus" -SourceScript "id; echo HelloWorld" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>

Remarque

Les blobs de sortie et d'erreur doivent être de type AppendBlob et leurs URI SAS doivent fournir des accès en lecture, en ajout, en création et en écriture à l'objet blob. Une heure d’expiration de 24 heures est suggérée pour l’URI SAP. Si l’objet blob de sortie ou d’erreur n’existe pas, un objet blob de type AppendBlob est créé. Vous pouvez générer des URI SAS sur le portail Azure à l’aide des options de l’objet blob ou du jeton SAS en utilisant New-AzStorageBlobSASToken.

Créer ou mettre à jour une commande d’exécution sur un ordinateur en tant qu’utilisateur différent

Créez ou mettez à jour la commande Run sur une machine en tant qu’utilisateur différent avec les paramètres RunAsUser et RunAsPassword.

Avant de pouvoir utiliser ces paramètres, vous devez :

  • Contactez l’administrateur de l’ordinateur et vérifiez que l’utilisateur a accès à l’ordinateur.
  • Vérifiez que l’utilisateur a accès aux ressources accessibles par la commande Exécuter. Exemples : répertoires, fichiers, réseau, et ainsi de suite.
  • Sur un ordinateur Windows, assurez-vous que « Ouverture de session secondaire » est en cours d’exécution.
New-AzMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword

Créer ou mettre à jour la commande Run sur une machine avec un fichier de script local

Créez ou mettez à jour la commande d’exécution sur un ordinateur à l’aide d’un fichier de script local sur l’ordinateur client où cmdlet est exécuté.

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -VMName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"

Créer ou mettre à jour la commande Run sur une machine tout en transmettant des entrées sensibles au script

Permet ProtectedParameter de transmettre toutes les entrées sensibles à un script tel que des mots de passe ou des clés.

$privateParametersArray = @{name='inputText';value='privateParam1value'}

New-AzConnectedMachineRunCommand -MachineName "MyMachine" -ResourceGroupName "MyRG0" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri <SourceScriptUri> -ProtectedParameter $privateParametersArray 

Exemple de script pour capturer inputText :

param ([string]$inputText)
Write-Output $inputText

Vous pouvez également passer des paramètres publics de manière similaire à l’aide de Parameter.

  • Windows - Parameter et ProtectedParameter sont passés à un script similaire à l’exemple suivant : myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Linux : un nom Parameter et ses valeurs sont définis dans la configuration d’environnement, qui doit être accessible dans le script PowerShell. Pour les arguments sans nom, passez une chaîne vide pour nommer l’entrée. Les arguments sans nom sont passés à un script similaire à l’exemple suivant : myscript.sh publicParam1value publicParam2value secret1value secret2value

Supprimer la ressource RunCommand de la machine

Supprimez la ressource Exécuter la commande précédemment déployée sur l’ordinateur. Si l’exécution du script est toujours en cours, l’exécution se termine.

Remove-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"