Compartilhar via


Solicitações do PowerShell para executar o comando em servidores habilitados para Azure Arc (versão prévia)

Usando os comandos do PowerShell para o Comando de Execução de Máquina Conectada, você pode executar remotamente e com segurança scripts ou comandos em máquinas virtuais habilitadas para Arc sem se conectar diretamente a elas por meio do Protocolo de Área de Trabalho Remota ou SSH.

Este artigo fornece exemplos que usam vários comandos do PowerShell para ajudá-lo a entender como usar o PowerShell para executar scripts ou comandos em seu servidor habilitado para Arc.

Pré-requisitos

  • A versão do agente do Connected Machine no servidor habilitado para Arc deve ser 1.33 ou superior.

Solicitações de exemplo do PowerShell

Os exemplos a seguir usam vários comandos do PowerShell para trabalhar com comandos de execução em um servidor compatível com o Arc.

Executar um script em um computador

Este comando entrega o script para o computador, executa-o e retorna a saída capturada.

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

Observação

Você pode adicionar vários comandos no -SourceScript parâmetro. Use ; para separar cada comando. Exemplo: –SourceScript "id; echo Hello World!"

Executar um script no computador usando um arquivo de script no armazenamento

Esse comando direciona o agente do Computador Conectado para um URI de SAS (assinatura de acesso compartilhado) para um blob de armazenamento em que um script foi carregado e direciona o agente para executar o script e retornar a saída capturada.

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

Observação

O scriptUri é um URI de SAS (assinatura de acesso compartilhado) para o blob de armazenamento e deve fornecer acesso de leitura ao blob. Um tempo de expiração de 24 horas é recomendado para o URI SAS. Você pode gerar um URI sas no portal do Azure usando opções de blobs ou token SAS usando New-AzStorageBlobSASToken. Se estiver gerando token SAS usando New-AzStorageBlobSASToken, o formato de URI SAS será: base blob URL + "?" + o token SAS de New-AzStorageBlobSASToken.

Listar todos os recursos do Comando Executar implantados em uma máquina

Este comando retorna uma lista completa de comandos de execução implantados anteriormente com as respectivas propriedades.

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

Obter resultados e status da execução

Esse comando recupera o progresso da execução atual para um comando Executar, incluindo saída mais recente, hora de início/término, código de saída e estado do terminal da execução.

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

Obtenha informações de status para um comando de execução através da visualização de instância

Obtenha informações de status para um comando de execução na máquina com visualização de instância. A Exibição de Instância contém o estado de execução do comando Executar (bem-sucedido, com falha e assim por diante), código de saída, saída padrão e erro padrão gerados pela execução do script. Um código de saída diferente de zero indica uma execução malsucedida.

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

Além de outras informações, a resposta retorna estes campos:

  • InstanceViewExecutionState: Status do script do comando Executar. Veja esse estado para saber se o script foi bem-sucedido ou não.

  • ProvisioningState: status do provisionamento de extensão geral de ponta a ponta (indica se a plataforma de extensão pode disparar o script de Executar Comando).

Crie ou atualize o comando Executar em uma máquina e capture mensagens de saída padrão e de erro padrão

Crie ou atualize o comando Executar em uma máquina e transmita mensagens de saída padrão e erro padrão para blobs de saída e erro.

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

Observação

Os blobs de saída e de erro devem ser do tipo AppendBlob e suas URIs SAS devem fornecer acesso de leitura, acréscimo, criação e gravação ao blob. Um tempo de expiração de 24 horas é sugerido para o SAS URI. Se o blob de saída ou erro não existir, um blob do tipo AppendBlob será criado. Você pode gerar uma URIs SAS no portal do Azure usando as opções do blob ou o token SAS usando New-AzStorageBlobSASToken.

Crie ou atualize o comando Executar em uma máquina como um usuário diferente

Crie ou atualize o comando Executar em uma máquina como um usuário diferente com os parâmetros RunAsUser e RunAsPassword.

Antes de usar esses parâmetros, você precisa:

  • Contate o administrador do computador e verifique se o usuário tem acesso ao computador.
  • Verifique se o usuário tem acesso aos recursos acessados pelo comando Executar. Exemplos: diretórios, arquivos, rede e assim por diante.
  • Em um computador Windows, verifique se o "Logon Secundário" está em execução.
New-AzMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword

Criar ou atualizar o comando de execução em um computador com arquivo de script local.

Crie ou atualize um comando de execução em uma máquina usando um arquivo de script local na máquina cliente onde cmdlet é executado.

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

Crie ou atualize o comando Executar em um computador ao passar entradas confidenciais para o script

Use ProtectedParameter para passar entradas confidenciais para um script, como senhas ou chaves.

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

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

Script de exemplo para capturar texto de entrada.

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

Você também pode passar parâmetros públicos de maneira semelhante usando Parameter.

  • Windows – O parâmetro e o ProtectedParameter são passados para um script semelhante ao exemplo a seguir: myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Linux – Um elemento nomeado Parameter e seus valores são definidos na configuração de ambiente, que deve estar acessível dentro do script do PowerShell. Para argumentos sem nome, passe uma cadeia de caracteres vazia para nomear a entrada. Argumentos sem nome são passados para script semelhante ao seguinte exemplo: myscript.sh publicParam1value publicParam2value secret1value secret2value

Excluir o recurso RunCommand do computador

Remova o recurso Executar Comando implantado anteriormente no computador. Se a execução do script ainda estiver em andamento, a execução será encerrada.

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