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:
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.
Em outra VM na mesma rede virtual, abra o editor do Registro (regedit.exe).
Selecione Arquivo>Conecte o Registro de Rede.
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 .
Digite as credenciais para a VM de destino.
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.
Em outra VM na mesma rede virtual, abra uma instância de Services.msc.
Clique com botão direito serviços (Local).
Selecione Conectar-se a outro computador.
Insira o IP dinâmico da VM de destino.
Faça as alterações necessárias para os serviços.
Próximas etapas
- Para obter mais informações sobre o cmdlet Enter-PSSession, consulte Enter-PSSession.
- Para obter mais informações sobre a Extensão de Script Personalizado para Windows usando o modelo de implantação clássico, consulte Extensão de Script Personalizado para Windows.
- PsExec é parte do conjunto PSTools.
- Para obter mais informações sobre o PSTools Suite, consulte PSTools.
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.