Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Con los comandos de PowerShell para el comando Connected Machine Run, puede ejecutar scripts o comandos de forma remota y segura en máquinas virtuales habilitadas para Arc sin conectarse directamente a ellos a través del protocolo de Escritorio remoto o SSH.
En este artículo se proporcionan ejemplos que usan varios comandos de PowerShell para ayudarle a comprender cómo usar PowerShell para ejecutar scripts o comandos en el servidor habilitado para Arc.
Prerrequisitos
- La versión del agente de Connected Machine en el servidor habilitado para Arc debe ser 1.33 o posterior.
Solicitudes de ejemplo de PowerShell
En los ejemplos siguientes se usan varios comandos de PowerShell para trabajar con comandos Run en un servidor habilitado para Arc.
Ejecución de un script en una máquina
Este comando entrega el script a la máquina, lo ejecuta y devuelve la salida capturada.
New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "eastus" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Nota:
Puede agregar varios comandos en el -SourceScript parámetro . Use ; para separar cada comando.
Ejemplo: –SourceScript "id; echo Hello World!"
Ejecución de un script en la máquina mediante un archivo de script en el almacenamiento
Este comando dirige el agente de Connected Machine a un URI de firma de acceso compartido (SAS) para un blob de almacenamiento donde se cargó un script y, a continuación, dirige al agente para ejecutar el script y devolver la salida capturada.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>”
Nota:
scriptUri es un URI de firma de acceso compartido (SAS) para el blob de almacenamiento y debe proporcionar acceso de lectura al blob. Se sugiere una hora de expiración de 24 horas para el URI de SAS. Puede generar un URI de SAS en Azure Portal mediante opciones de blobs o token de SAS mediante New-AzStorageBlobSASToken. Si genera el token de SAS mediante New-AzStorageBlobSASToken, el formato de URI de SAS es: base blob URL + "?" + el token de SAS de New-AzStorageBlobSASToken.
Enumerar todos los recursos de comando Run implementados en una máquina
Este comando devuelve una lista completa de los comandos de ejecución implementados anteriormente junto con sus propiedades.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"
Obtención del estado de ejecución y los resultados
Este comando recupera el progreso de la ejecución actual de un comando Ejecutar, incluida la salida más reciente, la hora de inicio y finalización, el código de salida y el estado de terminal de la ejecución.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"
Obtener información de estado de un comando de ejecución a través de la Vista de Instancia
Obtenga información del estado de un comando de ejecución en la máquina con Vista de Instancia. La vista de instancia contiene el estado de ejecución del comando Ejecutar (correcto, erróneo, etc.), código de salida, salida estándar y error estándar generado mediante la ejecución del script. Un código de salida distinto de cero indica una ejecución incorrecta.
Get-AzConnectedMachineRunCommand -ResourceGroupName "MyRG" -MachineName "MyMachine" -RunCommandName "MyRunCommand"
Además de otra información, la respuesta devuelve estos campos:
InstanceViewExecutionState: estado del script de Ejecutar comando. Consulte este estado para saber si el script se realizó correctamente o no.ProvisioningState: estado del aprovisionamiento general de extensiones de extremo a extremo (si la plataforma de extensión pudo ejecutar el script del comando 'Run' o no).
Crear o actualizar el comando Ejecutar en una máquina y capturar la salida estándar y los mensajes de error estándar
Cree o actualice una instancia de Ejecutar comando en una máquina y transmita los mensajes de error estándar y la salida estándar a los blobs en anexos de salida y error.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" - MachineName "MyMachine" -RunCommandName "MyRunCommand3" -Location "eastus" -SourceScript "id; echo HelloWorld" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>
Nota:
Los blobs de salida y error deben ser el tipo AppendBlob y sus URI de SAS deben proporcionar acceso de lectura, anexión, creación y escritura al blob. Se recomienda un tiempo de expiración de 24 horas para el URI de SAS. Si la salida o el blob de error no existen, se crea un blob de tipo AppendBlob. Puede generar un URI de SAS en el Azure Portal usando las opciones del blob o el token de SAS mediante New-AzStorageBlobSASToken.
Cree o actualice Ejecutar comando en un equipo como un usuario diferente
Cree o actualice el comando Ejecutar en una máquina como un usuario diferente con los parámetros RunAsUser y RunAsPassword.
Para poder usar estos parámetros, debe hacer lo siguiente:
- Póngase en contacto con el administrador del equipo y asegúrese de que el usuario tiene acceso a la máquina.
- Asegúrese de que el usuario tiene acceso a los recursos a los que accede el comando Ejecutar. Ejemplos: directorios, archivos, red, etc.
- En un equipo Windows, asegúrese de que se está ejecutando "Inicio de sesión secundario".
New-AzMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword
Cree o actualice Ejecutar comando en un equipo con un archivo de script local
Cree o actualice Run Command en un equipo mediante un archivo de script local en el equipo cliente donde cmdlet se ejecuta.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -VMName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Cree o actualice Ejecutar comando en una máquina mientras se pasan entradas confidenciales al script
Use ProtectedParameter para pasar las entradas confidenciales a un script como contraseñas o claves.
$privateParametersArray = @{name='inputText';value='privateParam1value'}
New-AzConnectedMachineRunCommand -MachineName "MyMachine" -ResourceGroupName "MyRG0" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri <SourceScriptUri> -ProtectedParameter $privateParametersArray
Script de ejemplo para capturar texto de entrada.
param ([string]$inputText)
Write-Output $inputText
También puede pasar parámetros públicos de forma similar mediante Parameter.
Windows: parameter y ProtectedParameter se pasan a un script similar al ejemplo siguiente:
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2valueLinux: Una entidad nombrada
Parametery sus valores se asignan a la configuración del entorno, lo cual debe ser accesible dentro del script de PowerShell. Para los argumentos sin nombre, pase una cadena vacía para la entrada del nombre. Los argumentos sin nombre se pasan al script similar al ejemplo siguiente:myscript.sh publicParam1value publicParam2value secret1value secret2value
Eliminación del recurso RunCommand de la máquina
Quite el recurso Ejecutar comando implementado anteriormente en la máquina. Si la ejecución del script todavía está en curso, la ejecución finaliza.
Remove-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"