Come eseguire comandi su computer remoti con PowerShell

Eseguire comandi localmente sui computer remoti è un compito comune che molti amministratori IT devono fare ogni giorno. Ecco come puoi farlo in PowerShell.

A volte non è sufficiente utilizzare DCOM, RPC e altri protocolli remoti per eseguire attività su computer remoti. Per eseguire i comandi sul computer remoto effettivo richiede un approccio diverso. Un amministratore deve creare una sessione di qualche tipo e inviare comandi attraverso la rete che vengono poi consumati dal computer remoto.,

Poiché questo è un articolo su PowerShell e non su telnet (non stai usando telnet, vero?), stiamo andando a bastone con una tecnologia chiamata PowerShell Remoting. PowerShell Remoting è una caratteristica di PowerShell che è stato introdotto in Windows PowerShell v2. Esso consente agli utenti di aprire, gestire e chiudere le sessioni su computer remoti e interagire con loro proprio come se fossero seduti sulla console locale.,

Per stabilire una sessione chiamata PSSession con PowerShell è necessario che il computer remoto abbia PowerShell Remoting abilitato e in ascolto sulla porta 5985 (HTTP) o 5986 (HTTPS) con tutte le solite eccezioni del firewall. A seconda di come l’utente desidera stabilire la connessione, potrebbe essere necessaria anche una configurazione client. Ci sono molte configurazioni diverse in cui un utente può trovarsi, ma per questo articolo, assumeremo che i computer locali e remoti siano entrambi nello stesso dominio Active Directory., In questo contesto, PowerShell Remoting utilizzerà Kerberos per l’autenticazione e non sarà necessario passare credenziali alternative ai comandi.

Supponendo che il computer remoto abbia PowerShell Remoting abilitato, proviamo prima a eseguire semplici comandi su un computer remoto. Come test per garantire che il codice sia in esecuzione sul computer remoto, mi piace sempre usare il comando hostname che restituisce il nome del computer.

Ci sono due modi in cui possiamo eseguire comandi remoti tramite PowerShell Remoting; possiamo emettere comandi in modo interattivo o non interattivo., Interattivamente significa che avremo bisogno di essere al nostro computer per eseguire i comandi fisicamente. Iniziamo mostrando un esempio non interattivo.

Per eseguire comandi remoti in modo non interattivo, usiamo il comando Invoke-Command. Questo comando ha un parametro ComputerName che ci consente di specificare un computer da eseguire sul comando. Abbiamo anche un parametro ScriptBlock in cui incapsuleremo i comandi che intendiamo eseguire sul computer remoto. Puoi vedere sotto come funziona in azione. Sto eseguendo il comando hostname localmente sul mio computer e quindi eseguendolo in remoto con Invoke-Command., Puoi vedere che restituisce risultati diversi.

PS C:\> hostname
MACWINVM
PS C:\> Invoke-Command -ComputerName SRV1 -ScriptBlock {hostname}
SRV1

Ora hai eseguito il tuo primo comando remoto! Tutto può andare nel parametro ScriptBlock. Di seguito, sto creando un’istruzione if/then all’interno di sc scriptblock come test per garantire che il codice sia in esecuzione da remoto.

Potresti non averlo notato, ma il comando Invoke-Command ha creato una sessione leggera in background per eseguire quel comando e quando il comando è stato completato lo ha abbattuto. Questo è più ovvio quando si sceglie di eseguire i comandi in modo interattivo utilizzando il comando Enter-PSSession.,

Il comando Enter-PSSession ti consente di accedere a una sessione remota, eseguire comandi, ottenere output e lavorare come se stessi digitando comandi nella console locale. Per fare questo, però, in primo luogo, è necessario stabilire una sessione. Un modo per farlo è usare il parametro ComputerName. Si noti di seguito che ho inserito una sessione remota e ho un nuovo prompt di PowerShell anteposto al nome del computer in cui è in esecuzione la sessione.

PS C:\> Enter-PSSession -ComputerName SRV1
: PS C:\>

A questo punto, posso eseguire tutti i comandi che vorrei, e saranno eseguiti sul computer remoto., Non abbiamo bisogno di usare Invoke-Command per fare questo. Eseguiamo semplicemente i comandi così come sono. Quando abbiamo finito, dobbiamo chiudere la sessione. Per fare ciò, usiamo la parola chiave exit che ci disconnette dalla sessione e la chiude.

Puoi vedere di seguito una volta digitato exit e premuto Enter, siamo immediatamente riportati alla nostra console locale.

: PS C:\>exit
PS C:\>

PowerShell Remoting è un modo conveniente per eseguire comandi su computer remoti., Finché il computer remoto è configurato per PowerShell Remoting, che è una configurazione una tantum, c’è minimo, se del caso, l’installazione necessaria sul computer client per questo lavoro. Soprattutto, se in un ambiente Active Directory, il processo è senza soluzione di continuità e un ottimo modo per evitare di dover sneakernet in tutto l’ufficio solo per eseguire script e comandi su tutti i computer!

Author: admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *