Usa gli strumenti remoti per risolvere i problemi relativi alle macchine virtuali di Azure
Si applica a: ✔️ macchine virtuali di Windows
Quando si risolvono i problemi in una macchina virtuale (VM) di Azure, è possibile connettersi alla macchina virtuale usando gli strumenti remoti descritti in questo articolo invece di usare il protocollo RDP (Remote Desktop Protocol).
Console seriale
Utilizzare una console seriale per macchine virtuali di Azure per eseguire i comandi nella macchina virtuale di Azure remota.
CMD remoto
Scarica PsExec. Connettiti alla VM eseguendo il seguente comando:
psexec \\<computer>-u user -s cmd
Note
- Il comando deve essere eseguito in un computer che si trova nella stessa rete virtuale.
- DIP o HostName possono essere utilizzati per sostituire il <computer>.
- Il parametro -s assicura che il comando venga richiamato utilizzando l'account di sistema (autorizzazione di amministratore).
- PsExec utilizza le porte TCP 135 e 445. Di conseguenza, le due porte devono essere aperte sul firewall.
Eseguire il comando
Per ulteriori informazioni su come utilizzare la funzionalità di esecuzione del comando per eseguire gli script sulla macchina virtuale, vedere Eseguire gli script di PowerShell nella macchina virtuale Windows con il comando di esecuzione.
Estensione di script personalizzati
È possibile usare la funzionalità Estensione script personalizzata per eseguire uno script personalizzato nella macchina virtuale di destinazione. Per utilizzare questa funzione, devono essere soddisfatte le seguenti condizioni:
La VM dispone di connettività.
L'agente per macchine virtuali di Azure è installato e funziona come previsto nella macchina virtuale.
L'estensione non è stata precedentemente installata nella VM.
L'estensione inserisce lo script solo la prima volta che viene utilizzato. Se utilizzi questa funzione in un secondo momento, l'estensione riconosce che è già stata utilizzata e non carica il nuovo script.
Carica lo script in un account di archiviazione e genera il relativo contenitore. Eseguire quindi lo script seguente in Azure PowerShell in un computer con 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
Remote PowerShell
Note
La porta TCP 5986 (HTTPS) deve essere aperta per poter utilizzare questa opzione.
Per le macchine virtuali di Azure Resource Manager è necessario aprire la porta 5986 nel gruppo di sicurezza di rete (NSG). Per ulteriori informazioni, consulta Gruppi di sicurezza.
Per le macchine virtuali RDFE, è necessario disporre di un endpoint con una porta privata (5986) e una porta pubblica. Quindi, devi anche aprire quella porta pubblica sul gruppo di sicurezza di rete.
Configurare il computer client
Per utilizzare PowerShell per connettersi alla macchina virtuale in remoto, devi prima configurare il computer client per consentire la connessione. A tale scopo, aggiungi la macchina virtuale all'elenco degli host attendibili di PowerShell eseguendo il comando seguente, a seconda dei casi.
Per aggiungere una macchina virtuale all'elenco degli host attendibili:
Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName>
Per aggiungere più macchine virtuali all'elenco degli 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 utilizzando il modello di distribuzione classico, utilizzare l'estensione dello script personalizzato per eseguire il seguente 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
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 seguente comando in base alla posizione del computer client:
All'esterno della rete virtuale o della distribuzione
Per una macchina virtuale creata utilizzando il modello di distribuzione classico, eseguire il seguente comando:
$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 innanzitutto 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
Note
L'impostazione del flag SkipCaCheck ignora il requisito di importare un certificato nella macchina virtuale all'avvio della sessione.
È inoltre possibile utilizzare il cmdlet Invoke-Command per eseguire uno script nella macchina virtuale in remoto.
Invoke-Command -ComputerName "<<COMPUTERNAME>" -ScriptBlock {"<<SCRIPT BLOCK>>"}
Registro remoto
Note
La porta TCP 135 o 445 deve essere aperta per utilizzare questa opzione.
Per le macchine virtuali di Azure Resource Manager è necessario aprire la porta 5986 nel gruppo di sicurezza di rete. Per ulteriori informazioni, consulta Gruppi di sicurezza.
Per le macchine virtuali RDFE, è necessario disporre di un endpoint con una porta privata 5986 e una porta pubblica. Devi anche aprire quella porta pubblica sul gruppo di sicurezza di rete.
Da un'altra macchina virtuale nella stessa rete virtuale aprire l'editor del registro (regedit.exe).
Seleziona File>Connetti registro di rete.
Individua la VM di destinazione in base al nome host o all'IP dinamico (preferibile) inserendolo nella casella Inserisci il nome dell'oggetto da selezionare.
Immettere le credenziali per la macchina virtuale di destinazione.
Apportare le modifiche necessarie al registro.
Console dei servizi remoti
Note
Le porte TCP 135 o 445 devono essere aperte per utilizzare questa opzione.
Per le macchine virtuali di Azure Resource Manager è necessario aprire la porta 5986 nel gruppo di sicurezza di rete. Per ulteriori informazioni, consulta Gruppi di sicurezza.
Per le macchine virtuali RDFE, è necessario disporre di un endpoint con una porta privata 5986 e una porta pubblica. Devi anche aprire quella porta pubblica sul gruppo di sicurezza di rete.
Da un'altra macchina virtuale nella stessa rete virtuale, apri un'istanza di Services.msc.
Fare clic con il pulsante destro del mouse su Servizi (locale).
Seleziona Connetti a un altro computer.
Immettere l'IP dinamico della macchina virtuale di destinazione.
Apportare le modifiche necessarie ai servizi.
Passaggi successivi
- Per ulteriori informazioni sul cmdlet Enter-PSSession, vedere Enter-PSSession.
- Per ulteriori informazioni sull'estensione script personalizzata per Windows utilizzando il modello di distribuzione classico, vedere Estensione script personalizzata per Windows.
- PsExec fa parte della PSTools Suite.
- Per ulteriori 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.