15Jul

Geek School: scopri come automatizzare Windows con PowerShell

In questa edizione di Geek School, ti aiuteremo a comprendere il potente linguaggio di scripting di PowerShell che è incorporato direttamente in Windows ed è estremamente utile conoscerlo in un ambiente IT.

Mentre questa serie non è strutturata attorno ad un esame, l'apprendimento di PowerShell è una delle cose più importanti che puoi fare come amministratore di rete, quindi se c'è una cosa che vuoi imparare per aiutare la tua carriera IT, è proprio così.Inoltre, è molto divertente.

Introduzione

PowerShell è lo strumento di automazione più potente che Microsoft abbia da offrire e che sia una shell e un linguaggio di scripting.

Si noti che questa serie è basata su PowerShell 3, fornito con Windows 8 e Server 2012. Se si utilizza Windows 7, scaricare l'aggiornamento di PowerShell 3 prima di continuare.

Meet the Console e ISE

Esistono due modi per interagire con PowerShell out of the box, la Console e l'Integrated Scripting Environment, noto anche come ISE.L'ISE è notevolmente migliorato dalla versione orribile fornita con PowerShell 2 e può essere aperto premendo la combinazione di tasti Win + R per aprire una finestra di esecuzione, quindi digitare powershell_ise e premere invio.

Come puoi vedere, l'ISE mostra una visualizzazione divisa in modo che tu possa scrivere rapidamente mentre sei ancora in grado di vedere il risultato nella metà inferiore dell'ISE.La metà inferiore dell'ISE, in cui vengono stampati i risultati del tuo script, può essere utilizzata anche come prompt REPL, molto simile al prompt dei comandi. V3 ISE ha infine aggiunto il supporto per intellisense sia nel riquadro degli script sia nella console interattiva.

In alternativa, è possibile interagire con PowerShell utilizzando la Console PowerShell, che è ciò che userò per la maggior parte di questa serie. La Console di PowerShell si comporta in modo molto simile al prompt dei comandi: si immettono semplicemente i comandi e vengono visualizzati i risultati. Per aprire la console di Windows PowerShell, premere nuovamente la combinazione di tasti Win + R per aprire una casella di esecuzione e digitare powershell, quindi premere invio.

REPL suggerisce come questo sono fantastici per una gratificazione immediata: si immette un comando e si ottengono risultati. Anche se la console non offre intellisense, offre qualcosa chiamato tab completamento che funziona più o meno allo stesso modo: basta iniziare a digitare un comando e premere il tasto Tab per scorrere le possibili corrispondenze.

Utilizzo del sistema di aiuto

Nelle versioni precedenti di PowerShell, i file di aiuto erano inclusi durante l'installazione di Windows. Questa è stata una buona soluzione per la maggior parte, ma ci ha lasciato un problema significativo. Quando il team di supporto di PowerShell ha dovuto smettere di lavorare sui file della guida, gli sviluppatori di PowerShell erano ancora impegnati nella codifica e nella modifica. Ciò significava che quando PowerShell veniva spedito, i file della guida non erano corretti perché non contenevano le modifiche più recenti apportate al codice. Per risolvere questo problema, PowerShell 3 non ha file di guida e include un sistema di aiuto aggiornabile. Questo significa che prima di fare qualsiasi cosa tu voglia scaricare i file di aiuto più recenti.È possibile farlo aprendo una console PowerShell ed eseguendo:

Update-Help

Congratulazioni per l'esecuzione del primo comando PowerShell! La verità è che il comando Aggiorna-Aiuto ha molte più opzioni che semplicemente semplicemente eseguendolo, e per vederle vorremmo vedere l'aiuto per il comando. Per visualizzare l'aiuto per un comando, è sufficiente passare il nome del comando che si desidera ottenere con il parametro Name del comando Get-Help, ad esempio:

Get-Help -Name Update-Help

Probabilmente ti starai chiedendo come interpretaretutto quel testo comunque, intendo perché ci sono due informazioni nella sezione della sintassi e perché ci sono così tante parentesi dappertutto? Per prima cosa: la ragione per cui ci sono due blocchi di informazioni nella sezione della sintassi è perché rappresentano diversi modi per eseguire il comando. Questi sono tecnicamente chiamati set di parametri e puoi usarne solo uno alla volta( non puoi mescolare i parametri di diversi set).Nello screenshot qui sopra puoi vedere che il set di parametri superiore ha un parametro SourcePath mentre il fondo no. Il motivo è che si utilizzerà il set di parametri superiore( quello che include SourcePath) se si aggiornassero i file della guida da un'altra macchina sulla rete che li aveva già scaricati, mentre non sarebbe necessario specificare un percorso di origine se sivolevo solo prendere gli ultimi file da Microsoft.

Per rispondere alla seconda domanda, c'è una certa sintassi che aiuta i file a seguire e qui è:

  • Le parentesi quadre attorno al nome di un parametro e il suo tipo indicano che si tratta di un parametro facoltativo e il comando funzionerà correttamente senza di esso.
  • Le parentesi quadre attorno al nome dei parametri indicano che i parametri sono parametri posizionali.
  • La cosa alla destra di un parametro nelle parentesi angolate indica il tipo di dati che il parametro è in attesa.

Mentre dovresti imparare a leggere la sintassi del file di aiuto, se non sei mai sicuro di un particolare parametro, aggiungi -Full alla fine del comando get help e scorri verso il basso fino alla sezione parametri, dove ti dirà qualcosa in più suogni parametro.

Get-Help -Name Update-Help -Full

L'ultima cosa che devi sapere sul sistema di guida è come usarlo per scoprire i comandi, che in realtà è molto semplice. Vedete, PowerShell accetta i caratteri jolly quasi ovunque, quindi usarli insieme al comando Get-Help consente di scoprire facilmente i comandi. Ad esempio, sto cercando comandi che gestiscono i servizi di Windows:

Get-Help -Name * servizio *

Certo, tutte queste informazioni potrebbero non essere utili per il pip, ma fidati, prenditi il ​​tempo e impara come usareil sistema di aiuto.È sempre utile, anche per gli sceneggiatori avanzati che lo fanno da anni.

Security

Questa non sarebbe un'introduzione adeguata senza menzionare la sicurezza. La maggiore preoccupazione per il team di PowerShell è che PowerShell diventa il punto di attacco più recente e più grande per gli script kiddies. Hanno messo in atto alcune misure di sicurezza per assicurarsi che ciò non avvenga, quindi diamo un'occhiata a loro.

La forma più semplice di protezione deriva dal fatto che l'estensione del file PS1( l'estensione utilizzata per indicare uno script PowerShell) non è registrata con un host PowerShell, in realtà è registrata con Blocco note. Ciò significa che se fai doppio clic su un file verrà aperto con il blocco note anziché eseguire.

In secondo luogo, non è possibile eseguire script dalla shell semplicemente digitando il nome dello script, è necessario specificare il percorso completo dello script. Pertanto, se si desidera eseguire uno script sull'unità C, è necessario digitare:

C: \ runme.ps1

Oppure, se si è già nella directory principale dell'unità C, è possibile utilizzare quanto segue:

. \ Runme.ps1

Infine, PowerShell ha qualcosa chiamato Execution Policies, che ti impedisce di eseguire qualsiasi vecchio script. Infatti, per impostazione predefinita, non è possibile eseguire script e modificare i criteri di esecuzione se si desidera consentire loro di eseguirli. Esistono 4 criteri di esecuzione notevoli:

  • con restrizioni : questa è la configurazione predefinita in PowerShell. Questa impostazione significa che nessuno script può essere eseguito, indipendentemente dalla sua firma. L'unica cosa che può essere eseguita in PowerShell con questa impostazione è un comando individuale.
  • AllSigned: Questa impostazione consente agli script di essere eseguiti in PowerShell. Lo script deve avere una firma digitale associata da un editore attendibile. Ci sarà un prompt prima di eseguire gli script da editori fidati. RemoteSigned : questa impostazione consente di eseguire script, ma richiede che lo script e i file di configurazione scaricati da Internet abbiano una firma digitale associata da un editore attendibile. Gli script eseguiti dal computer locale non devono essere firmati. Non ci sono richieste prima di eseguire lo script.
  • illimitato: consente di eseguire script non firmati, inclusi tutti gli script e i file di configurazione scaricati da Internet. Ciò includerà i file da Outlook e Messenger. Il rischio qui è l'esecuzione di script senza firma o sicurezza. Abbiamo ricominciato a non usarci mai questa impostazione.

Per vedere a quale policy di esecuzione è impostata, aprire una Console PowerShell e digitare:

Get-ExecutionPolicy

Per questo corso e molte altre circostanze, il criterio RemoteSigned è il migliore, quindi procedere e modificare la politica utilizzando quanto segue.

Nota: questa operazione deve essere eseguita da una console PowerShell elevata.

Set-ExecutionPolicy RemoteSigned

Questo è tutto per questa volta gente, ci vediamo domani per un po 'di divertimento in PowerShell.

Dichiarazione di non responsabilità

: il termine corretto per un comando di PowerShell è un cmdlet e da questo momento useremo questa terminologia corretta. Mi è sembrato più appropriato chiamarli comandi per questa introduzione.

Se avete domande, potete twittarmi @taybgibb o semplicemente lasciare un commento.