Con l’arrivo di Windows Server 2016 e Windows 10, Microsoft ha introdotto una nuova funzionalità molto interessante per chiunque desideri eseguire attività remote con macchine virtuali. PowerShell Direct consente agli amministratori IT di eseguire sessioni PowerShell all’interno di una macchina virtuale Hyper-V in modalità diretta, senza necessità di alcuna configurazione di rete o permessi. Ciò significa che è possibile richiamare uno script anche se la rete non è disponibile; o se gli host sono separati da server / client o non c’è modo di aprire una sessione remota di PowerShell a causa di politiche di sicurezza. Per questo motivo, PowerShell Direct è una novità importante da conoscere.
Requisiti
Per utilizzare PowerShell Direct è necessario verificare questi requisiti:
- La macchina virtuale deve eseguire Windows 10 o Windows Server 2016
- La macchina virtuale deve essere in esecuzione nello stesso host che si desidera utilizzare per aprire la sessione
- La Macchina Virtuale deve avere almeno un profilo utente valido configurato
- La sessione deve essere aperta come amministratore locale dell’host Hyper-V
- È necessario inserire credenziali valide per Virtual Machine
Creare una sessione remota
Per aprire una nuova sessione remota, utilizzare il comando Enter-PSSession -VMName yourvm – come mostrato nella figura 1.
Figura 1 – Nuova sessione Powershell
Una volta che si è all’interno della sessione, è possibile lavorare nella macchina virtuale ed eseguire i cmdlet di PowerShell nello stesso modo che in locale, ciò significa che è possibile utilizzare i moduli Powershell installati; come mostrato in figura 2, possiamo usare i comandi docker senza problemi sebbene il ruolo non sia presente nell’host Hyper-V.
Figure 2 – Comandi remoti
Nota: tenere presente che tutte le connessioni basate su Enter-PSSession sono temporanee e ciò significa che se si chiude la finestra, sarà necessario inserire nuovamente le credenziali.
Eseguire comandi complessi
La classica connessione può essere utilizzata per eseguire attività semplici, mentre se è necessario eseguire script avanzati, è possibile utilizzare il comando Invoke. Questo cmdlet è perfetto per eseguire uno script complesso memorizzato in un repository (in locale o in remoto). È possibile utilizzare due tipi di modi:
- Command: Invoke-Command -VMName nomevm -ScriptBlock { Get-Service }
- Script: Invoke-Command -VMName nomevm -FilePath “C:\hyperv-folder\script.ps1”
Figure 3 – Invoke Command
Copia di file
Non solo comandi o script, ma anche un modo per trasferire file dall’host alla macchina virtuale. Questo può essere ottenuto con il cmdlet “Copy-Item”, ma è necessario aprire una sessione persistente per evitare interruzioni nel caso in cui si chiuda la finestra; l’obiettivo è utilizzare la stessa sessione ogni volta senza reinserire le credenziali. Questo è un esempio:
$VM = New-PSSession -VMName nomevm -Credential (Get-Credential)
Copy-Item -ToSession $VM -Path C:\hyperv-folder\app.exe -Destination C:\guest-vm\
Figure 4 –Copia di file
Le prestazioni dietro questa attività sono molto interessanti perché grazie a VMBus, possiamo saltare tutti i driver e i livelli per consentire la comunicazione. Il risultato è un processo di copia ad alta velocità, ma non dimenticare di considerare quale tipo di file vuoi trasferire e anche le prestazioni della VM (un file .vhdx situato in un SSD è molto più veloce di un file situato su un HDD).
Conclusioni
PowerShell Direct consente agli amministratori IT di eseguire e automatizzare le attività di gestione senza l’obbligo di interagire con il sistema operativo tramite GUI.
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
**********************************************************************************
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
*****************************************