Compartilhar via


Use ferramentas remotas para solucionar problemas do VM do Azure

Aplica-se a: ✔️ Windows VMs

Ao solucionar problemas em uma VM (máquina virtual) do Azure, você pode se conectar à VM usando as ferramentas remotas discutidas neste artigo, em vez de usar o RDP (Remote Desktop Protocol).

Console serial

Use um console serial para Máquinas Virtuais do Azure para executar comandos na VM remota do Azure.

CMD remoto

Baixe o PsExec. Conecte-se à VM executando o seguinte comando:

psexec \\<computer>-u user -s cmd

Observação

  • O comando deve ser executado em um computador que esteja na mesma rede virtual.
  • DIP ou HostName podem ser usados para substituir <o computador>.
  • O parâmetro -s garante que o comando seja chamado usando a conta do sistema (permissão de administrador).
  • PsExec usa portas TCP 135 e 445. Como resultado, as duas portas precisam estar abertas no firewall.

Executar comando

Para obter mais informações sobre como usar o recurso de comando de execução para executar scripts na VM, consulte Executar scripts do PowerShell em sua VM do Windows com o comando de execução.

Extensão de script personalizado

Você pode usar o recurso Custom Script Extension para executar um script personalizado na VM de destino. Para usar esse recurso, as seguintes condições devem ser atendidas:

  • A VM tem conectividade.

  • O Agente de Máquina Virtual do Azure está instalado e funcionando conforme o esperado na VM.

  • A extensão não foi instalada anteriormente na VM.

    A extensão injeta o script somente na primeira vez que ele é usado. Se você usar esse recurso posteriormente, a extensão reconhecerá que ele já foi usado e não carregará o novo script.

Carregue seu script em uma conta de armazenamento e gere seu próprio contêiner. Em seguida, execute o seguinte script do PowerShell do Azure em um computador que tenha conectividade com a VM.

Para VMs do Azure Resource Manager

#Set up the basic variables.
$subscriptionID = "<<SUBSCRIPTION ID>>"
$storageAccount = "<<STORAGE ACCOUNT>>"
$storageRG = "<<RESOURCE GROUP OF THE STORAGE ACCOUNT>>" 
$localScript = "<<FULL PATH OF THE PS1 FILE TO EXECUTE ON THE VM>>" 
$blobName = "file.ps1" #Name you want for the blob in the storage.
$vmName = "<<VM NAME>>" 
$vmResourceGroup = "<<RESOURCE GROUP>>"
$vmLocation = "<<DATACENTER>>" 
 
#Set up the Azure PowerShell module, and ensure the access to the subscription.
Login-AzAccount #Ensure login with the account associated with the subscription ID.
Get-AzSubscription -SubscriptionId $subscriptionID | Select-AzSubscription

#Set up the access to the storage account, and upload the script.
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageRG -Name $storageAccount).Value[0]
$context = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageKey
$container = "cse" + (Get-Date -Format yyyyMMddhhmmss)
New-AzureStorageContainer -Name $container -Permission Off -Context $context
Set-AzureStorageBlobContent -File $localScript -Container $container -Blob $blobName  -Context $context

#Push the script into the VM.
Set-AzVMCustomScriptExtension -Name "CustomScriptExtension" -ResourceGroupName $vmResourceGroup -VMName $vmName -Location $vmLocation -StorageAccountName $storageAccount -StorageAccountKey $storagekey -ContainerName $container -FileName $blobName -Run $blobName

PowerShell remoto

Observação

A porta TCP 5986 (HTTPS) deve estar aberta para que você possa usar essa opção.

Para VMs do Azure Resource Manager, você deve abrir a porta 5986 no NSG (grupo de segurança de rede). Para saber, confira Grupos de segurança.

Para VMs RDFE, você deve ter um terminal que tenha uma porta privada (5986) e uma porta pública. Em seguida, você também precisa abrir essa porta voltada para o público no NSG.

Configurar o computador cliente

Para usar o PowerShell para conectar-se à VM remotamente, primeiro você precisa configurar o computador cliente para permitir a conexão. Para isso, adicione a VM à lista de hosts confiáveis do PowerShell executando o seguinte comando, conforme apropriado.

Para adicionar uma VM à lista de hosts confiáveis:

Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName>

Para adicionar várias VMs à lista de hosts confiáveis:

Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName1>,<ComputerName2>

Para adicionar todos os computadores à lista de hosts confiáveis:

Set-Item wsman:\localhost\Client\TrustedHosts -value *

Habilitar RemotePS na VM

Para VMs criadas usando o modelo de implantação clássico, use a Extensão de Script Personalizado para executar o seguinte script:

Enable-PSRemoting -Force
New-NetFirewallRule -Name "Allow WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Profile Any -Action Allow -Direction Inbound -LocalPort 5986 -Protocol TCP
$thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My).Thumbprint
$command = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:computername""; CertificateThumbprint=""$thumbprint""}"
cmd.exe /C $command

Para VMs do Azure Resource Manager, use comandos de execução do portal para executar o script EnableRemotePS:

Captura de tela das etapas para executar o script EnableRemotePS do portal.

Conectar-se à VM

Execute o seguinte comando com base no local do computador cliente:

  • Fora da rede virtual ou implantação

    • Para uma VM criada usando o modelo de implantação clássico, execute o seguinte comando:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName  "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
    • Para uma VM do Azure Resource Manager, primeiro adicione um nome DNS ao endereço IP público. Para obter etapas detalhadas, consulte Criar um nome de domínio totalmente qualificado no portal do Azure para uma VM do Windows. Em seguida, execute o seguinte comando:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
  • Dentro da rede virtual ou implantação, execute o seguinte comando:

    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
    Enter-PSSession -ComputerName  "<<HOSTNAME>>" -port 5986 -Credential (Get-Credential) -useSSL -SessionOption $Skip
    

Observação

Definir o sinalizador SkipCaCheck ignora o requisito para importar um certificado para a VM quando você inicia a sessão.

Você também pode usar o cmdlet Invoke-Command para executar um script na VM remotamente.

Invoke-Command -ComputerName "<<COMPUTERNAME>" -ScriptBlock {"<<SCRIPT BLOCK>>"}

Registro Remoto

Observação

A porta TCP 135 ou 445 deve estar aberta para usar esta opção.

Para VMs do Azure Resource Manager, você precisa abrir a porta 5986 no NSG. Para saber, confira Grupos de segurança.

Para VMs RDFE, você deve ter um terminal que tenha uma porta privada 5986 e uma porta pública. Você também precisa abrir essa porta voltada para o público no NSG.

  1. Em outra VM na mesma rede virtual, abra o editor do Registro (regedit.exe).

  2. Selecione Arquivo>Conecte o Registro de Rede.

    Captura de tela do Connect Network Registry... opção no menu Arquivo do Editor do Registro

  3. Localize a VM de destino pelo nome do host ou IP dinâmico (preferencial) inserindo-a na caixa Inserir o nome do objeto a ser selecionado .

    Captura de tela da caixa Digite o nome do objeto a ser selecionado na caixa de diálogo Selecionar computador.

  4. Digite as credenciais para a VM de destino.

  5. Faça as alterações necessárias no registro.

Console de serviços remotos

Observação

As portas TCP 135 ou 445 devem estar abertas para usar essa opção.

Para VMs do Azure Resource Manager, você precisa abrir a porta 5986 no NSG. Para saber, confira Grupos de segurança.

Para VMs RDFE, você deve ter um terminal que tenha uma porta privada 5986 e uma porta pública. Você também precisa abrir essa porta voltada para o público no NSG.

  1. Em outra VM na mesma rede virtual, abra uma instância de Services.msc.

  2. Clique com botão direito serviços (Local).

  3. Selecione Conectar-se a outro computador.

    Captura de tela da opção Conectar a outro computador no menu do botão direito do mouse em Serviços (Local).

  4. Insira o IP dinâmico da VM de destino.

    Captura de tela da caixa de entrada IP dinâmico na opção Outro computador na caixa de diálogo Selecionar computador.

  5. Faça as alterações necessárias para os serviços.

Próximas etapas

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.