Use ferramentas remotas para solucionar problemas de VM do Azure
Aplica-se a: ✔️ VMs do Windows
Ao solucionar problemas em uma máquina virtual (VM) 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 PsExec. Conecte à 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 <computador>.
- O parâmetro -s garante que o comando seja invocado usando a conta do sistema (permissão de administrador).
- O PsExec usa as portas TCP 135 e 445. Como resultado, as duas portas devem estar abertas no firewall.
Execute o 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 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 apenas na primeira vez em que é usado. Se você usar esse recurso posteriormente, a extensão reconhecerá que 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 no Azure PowerShell 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 esta opção.
Para VMs do Azure Resource Manager, você deve abrir a porta 5986 no grupo de segurança de rede (NSG). Para obter mais informações, consulte Grupos de segurança.
Para VMs RDFE, você deve ter um endpoint que tenha uma porta privada (5986) e uma porta pública. Então, você também precisa abrir essa porta voltada para o público no NSG.
Configurar o computador cliente
Para usar o PowerShell para se conectar à VM remotamente, primeiro você precisa configurar o computador cliente para permitir a conexão. Para fazer 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 Custom Script Extension 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 de 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 obter mais informações, consulte Grupos de segurança.
Para VMs RDFE, você deve ter um endpoint 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.
De outra VM na mesma rede virtual, abra o editor de registro (regedit.exe).
Selecione Arquivo>Conectar Registro de Rede.
Localize a VM de destino por nome do host ou IP dinâmico (preferível) inserindo-o na caixa Insira o nome do objeto a ser selecionado.
Insira as credenciais para a VM de destino.
Faça as alterações de registro necessárias.
Console de serviços remotos
Observação
As portas TCP 135 ou 445 devem estar abertas para usar esta opção.
Para VMs do Azure Resource Manager, você precisa abrir a porta 5986 no NSG. Para obter mais informações, consulte Grupos de segurança.
Para VMs RDFE, você deve ter um endpoint 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.
De outra VM na mesma rede virtual, abra uma instância de Services.msc.
Clique com o botão direito em Serviços (Local).
Selecione Conectar a outro computador.
Insira o IP dinâmico da VM de destino.
Faça as alterações necessárias nos 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.
- O PsExec faz parte do PSTools Suite.
- Para obter mais informações sobre o Pacote PSTools, 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.