Homepage » come » Geek School Scopri come automatizzare Windows con PowerShell

    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 integrato in Windows ed è estremamente utile sapere in un ambiente IT.

    Sebbene questa serie non sia strutturata attorno a 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..

    Incontra la Console e l'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 da poter 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ò anche essere utilizzata come prompt REPL, in modo simile al prompt dei comandi. Il 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 di 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 Esegui e digitare PowerShell quindi premere Invio.

    Suggerimenti REPL come questo sono fantastici per una gratificazione immediata: si immette un comando e si ottengono risultati. Mentre 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 la scheda per scorrere le possibili corrispondenze.

    Utilizzo del sistema di guida

    Nelle versioni precedenti di PowerShell, i file della guida venivano inclusi quando si installava 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 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 include file della guida e include un sistema di guida aggiornabile. Questo significa che prima di fare qualsiasi cosa tu voglia scaricare i file di aiuto più recenti. Puoi farlo aprendo una Console PowerShell ed eseguendo:

    Update-Aiuto

    Congratulazioni per aver eseguito il tuo primo comando PowerShell! La verità è che il comando Update-Help 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, devi semplicemente passare il nome del comando che vuoi aiutare con il parametro Name del comando Get-Help, ad esempio:

    Get-Help -Name Aggiornamento-Guida

    Probabilmente ti starai chiedendo come interpretare tutto quel testo, voglio dire, perché ci sono due informazioni sulla 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 si volevo solo prendere gli ultimi file da Microsoft.

    Per rispondere alla seconda domanda, c'è una certa sintassi che i file di aiuto seguono 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à perfettamente 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 si aspetta.

    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 nella sezione parametri, dove ti dirà un po 'di più su ciascuna parametro.

    Get-Help -Name Update-Help -Full

    L'ultima cosa che devi sapere sul sistema di aiuto è come puoi 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 pipistrello, ma fidati di me, prenditi il ​​tempo e impara come usare il sistema di aiuto. È sempre utile, anche per gli sceneggiatori avanzati che lo fanno da anni.

    Sicurezza

    Questo non sarebbe un'introduzione adeguata senza menzionare la sicurezza. La maggiore preoccupazione per il team 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. Quindi se volessi eseguire uno script sul tuo drive C dovresti digitare:

    C: \ runme.ps1

    O se sei già alla radice del drive C puoi usare 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 politiche di esecuzione notevoli:

    • Limitato: 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. Verrà richiesto un prompt prima di eseguire gli script da editori attendibili.
    • 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 cosa è impostata la politica di esecuzione corrente, aprire una Console PowerShell e digitare:

    Get-ExecutionPolicy

    Per questo corso e la maggior parte delle altre circostanze, il criterio RemoteSigned è il migliore, quindi procedi e modifica la tua 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.