Partilhar via


Solicitações do PowerShell para o comando Executar em servidores habilitados com Azure Arc (Pré-visualização)

Usando os comandos do PowerShell para Comando de Execução de Máquina Conectada, você pode executar scripts ou comandos remotamente e com segurança 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 de Máquina Conectada 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 Run em um servidor habilitado para Arc.

Executar um script em uma máquina

Este comando entrega o script à máquina, executa-o e devolve 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 na máquina usando um arquivo de script no armazenamento

Este comando direciona o agente de Máquina Conectada para um URI de assinatura de acesso compartilhado (SAS) para um blob de armazenamento onde um script foi carregado e, em seguida, 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 assinatura de acesso compartilhado (SAS) para o blob de armazenamento e deve fornecer acesso de leitura ao blob. Sugere-se um tempo de expiração de 24 horas 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 gerar token SAS usando New-AzStorageBlobSASToken, o formato URI SAS é: base blob URL + "?" + o token SAS de New-AzStorageBlobSASToken.

Listar todos os recursos de comando de execução implantados numa máquina

Este comando retorna uma lista completa de Comandos de Execução implantados anteriormente, juntamente com suas propriedades.

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

Obter status e resultados de execução

Este comando recupera o progresso atual da execução de um comando Executar, incluindo a saída mais recente, a hora de início/fim, o código de saída e o estado terminal da execução.

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

Obter informações de status para um comando Executar por meio da Visualização de Instância

Obtenha informações de status para um comando de execução na máquina com a Vista de Instância. Instance View contém o estado de execução do comando Run (bem-sucedido, falhou e assim por diante), código de saída, saída padrão e erro padrão gerado 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: Estado do script do comando de execução. Consulte esse estado para saber se o script foi bem-sucedido ou não.

  • ProvisioningState: Status do provisionamento geral de extensão de ponta a ponta (se a plataforma de extensão foi capaz de acionar o script de comando Run ou não).

Criar ou atualizar o Run Command em uma máquina e capturar mensagens de saída padrão e de erro padrão

Criar ou atualizar o comando Run numa máquina e transmitir em tempo real mensagens de saída padrão e de erro padrão para blobs de saída e erro de anexação.

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 erro devem ser do tipo AppendBlob e seus URIs SAS devem fornecer acesso de leitura, acréscimo, criação e gravação ao blob. Sugere-se um tempo de expiração de 24 horas para o URI SAS. Se o blob de saída ou de erro não existir, um blob do tipo AppendBlob será criado. Você pode gerar URIs SAS no portal do Azure utilizando as opções do blob ou um token SAS usando New-AzStorageBlobSASToken.

Criar ou atualizar Executar comando 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 poder usar esses parâmetros, você precisa:

  • Entre em contato com o administrador da máquina e verifique se o usuário tem acesso à máquina.
  • Verifique se o usuário tem acesso aos recursos acessados pelo comando Executar. Exemplos: diretórios, arquivos, rede e assim por diante.
  • Em uma máquina Windows, verifique se '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 Executar em uma máquina com um arquivo de script local

Crie ou atualize o Run Command 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"

Criar ou atualizar o comando Executar numa máquina ao passar dados confidenciais para o script

Use ProtectedParameter para passar quaisquer 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 - Parameter e ProtectedParameter são passados para um script semelhante ao exemplo a seguir: myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Linux - Uma entidade nomeada Parameter e os seus valores são atribuídos à configuração do ambiente, que deve estar acessível no script do PowerShell. Para argumentos sem nome, passe uma string vazia para a entrada de nome. Argumentos sem nome são passados para script semelhante ao exemplo a seguir: myscript.sh publicParam1value publicParam2value secret1value secret2value

Excluir o recurso RunCommand da máquina

Remova o recurso Executar comando implantado anteriormente na máquina. Se a execução do script ainda estiver em andamento, a execução será encerrada.

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