Usare gli strumenti remoti per risolvere i problemi delle macchine virtuali di Azure
Si applica a: ✔️ macchine virtuali di Windows
Quando si risolvono i problemi in una macchina virtuale di Azure, è possibile connettersi alla macchina virtuale usando gli strumenti remoti illustrati in questo articolo anziché usare Remote Desktop Protocol (RDP).
Console seriale
Usare una console seriale per Azure Macchine virtuali per eseguire comandi nella macchina virtuale di Azure remota.
CMD remoto
Scaricare PsExec. Connettersi alla macchina virtuale eseguendo il comando seguente:
psexec \\<computer>-u user -s cmd
Nota
- Il comando deve essere eseguito in un computer che si trova nella stessa rete virtuale.
- È possibile usare DIP o HostName per sostituire <il computer>.
- Il parametro -s assicura che il comando venga richiamato mediante l'account di sistema (autorizzazioni di amministratore).
- PsExec usa le porte TCP 135 e 445. Di conseguenza, le due porte devono essere aperte sul firewall.
Eseguire il comando
Per altre informazioni su come usare la funzionalità esegui comando per eseguire script nella macchina virtuale, vedere Eseguire script di PowerShell nella macchina virtuale Windows con il comando run.
Estensione di script personalizzati
È possibile usare l'estensione script personalizzata per eseguire uno script personalizzato sulla macchina virtuale di destinazione. Per usare questa funzionalità devono essere soddisfatte le condizioni seguenti:
La macchina virtuale deve disporre di connettività.
L'agente di macchine virtuali di Azure è installato e funziona come previsto nella macchina virtuale.
L'estensione non è stata installata in precedenza nella macchina virtuale.
L'estensione inserisce lo script solo la prima volta che viene usata. Se si usa questa funzionalità in un secondo momento, l'estensione riconosce che è già stata usata e non carica il nuovo script.
Caricare lo script in un account di archiviazione e generare il proprio contenitore. Eseguire quindi lo script seguente in Azure PowerShell su un computer che disponga di connettività alla macchina virtuale.
Per le macchine virtuali di 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
Nota
La porta TCP 5986 (HTTPS) deve essere aperta per poter usare questa opzione.
Per le macchine virtuali di Azure Resource Manager, è necessario aprire la porta 5986 nel gruppo di sicurezza di rete.For Azure Resource Manager VMS, you must open port 5986 on the network security group (NSG). Per altre informazioni, vedere Gruppi di sicurezza.
Per le macchine virtuali RDFE è necessario un endpoint con una porta privata (5986) e una porta pubblica. Quindi, è anche necessario aprire la porta pubblica nel gruppo di sicurezza di rete.
Configurare il computer client
Per usare PowerShell per connettersi in remoto alla macchina virtuale, occorre prima configurare il computer client in modo che consenta la connessione. A questo scopo, aggiungere la macchina virtuale all'elenco degli host attendibili di PowerShell eseguendo il comando seguente nel modo appropriato.
Per aggiungere una macchina virtuale all'elenco di host attendibili:
Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName>
Per aggiungere più macchine virtuali all'elenco di host attendibili:
Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName1>,<ComputerName2>
Per aggiungere tutti i computer all'elenco degli host attendibili:
Set-Item wsman:\localhost\Client\TrustedHosts -value *
Abilitare RemotePS sulla macchina virtuale
Per le macchine virtuali create con il modello di distribuzione classica, usare l'estensione per script personalizzati per eseguire lo script seguente:
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
Per le macchine virtuali di Azure Resource Manager, usare i comandi di esecuzione dal portale per eseguire lo script EnableRemotePS:
Connettersi alla macchina virtuale
Eseguire il comando seguente in base al percorso del computer client:
All'esterno della rete virtuale o della distribuzione
Per una macchina virtuale creata usando il modello di distribuzione classica, eseguire il comando seguente:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
Per una macchina virtuale di Azure Resource Manager, aggiungere prima un nome DNS all'indirizzo IP pubblico. Per i passaggi dettagliati, vedere Creare un nome di dominio completo nel portale di Azure per una macchina virtuale Windows. Eseguire poi il comando seguente:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
All'interno della rete virtuale o della distribuzione eseguire il comando seguente:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<HOSTNAME>>" -port 5986 -Credential (Get-Credential) -useSSL -SessionOption $Skip
Nota
Impostando il flag SkipCaCheck è possibile ignorare il requisito di importazione di un certificato nella macchina virtuale all'avvio della sessione.
È anche possibile usare il cmdlet Invoke-Command per eseguire uno script nella macchina virtuale in modalità remota.
Invoke-Command -ComputerName "<<COMPUTERNAME>" -ScriptBlock {"<<SCRIPT BLOCK>>"}
Registro di sistema remoto
Nota
La porta TCP 135 o 445 deve essere aperta per poter usare questa opzione.
Per le macchine virtuali di Azure Resource Manager, è necessario aprire la porta 5986 nel gruppo di sicurezza di rete. Per altre informazioni, vedere Gruppi di sicurezza.
Per le macchine virtuali RDFE è necessario un endpoint con la porta privata 5986 e una porta pubblica. È anche necessario aprire la porta pubblica nel gruppo di sicurezza di rete.
Da un'altra macchina virtuale nella stessa rete virtuale aprire l'editor del Registro di sistema (regedit.exe).
Selezionare File>Connetti a Registro di sistema in rete.
Individuare la macchina virtuale di destinazione in base al nome host o all'INDIRIZZO IP dinamico (preferibilmente) immettendola nella casella Immettere il nome dell'oggetto da selezionare .
Immettere le credenziali della macchina virtuale di destinazione.
Apportare le modifiche al Registro di sistema, se necessario.
Console servizi remoti
Nota
La porta TCP 135 o 445 deve essere aperta per poter usare questa opzione.
Per le macchine virtuali di Azure Resource Manager, è necessario aprire la porta 5986 nel gruppo di sicurezza di rete. Per altre informazioni, vedere Gruppi di sicurezza.
Per le macchine virtuali RDFE è necessario un endpoint con la porta privata 5986 e una porta pubblica. È anche necessario aprire la porta pubblica nel gruppo di sicurezza di rete.
Da un'altra macchina virtuale nella stessa rete virtuale aprire un'istanza di Services.msc.
Fare clic con il pulsante destro del mouse su Servizi (computer locale).
Selezionare Connetti a un altro computer.
Immettere l'indirizzo IP dinamico della macchina virtuale di destinazione.
Apportare le modifiche necessarie ai servizi.
Passaggi successivi
- Per altre informazioni sul cmdlet Enter-PSSession, vedere Enter-PSSession.
- Per altre informazioni sull'estensione script personalizzata per Windows con il modello di distribuzione classica, vedere Estensione script personalizzata per Windows.
- PsExec fa parte della suite PSTools.
- Per altre informazioni su PSTools Suite, vedere PSTools.
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.