Come configurare smartphone e PC. Portale informativo
  • casa
  • Interessante
  • Come scrivere ed eseguire script PowerShell. Un'introduzione alla shell della riga di comando di Windows PowerShell

Come scrivere ed eseguire script PowerShell. Un'introduzione alla shell della riga di comando di Windows PowerShell

Ci sono cose che facciamo ogni giorno come amministratori di rete Windows, ma se ci venisse chiesto di farle utilizzando la riga di comando, al contrario degli amministratori Linux, sarebbe piuttosto problematico per noi amministratori di Windows. Windows è sempre stato debole quando si tratta di strumenti da riga di comando. Secondo me, tutto è cambiato con l'avvento di Windows Powershell. Con l'aiuto di Powershell (o in altre parole PS), puoi eseguire così tante funzioni diverse che prima non potevamo svolgere. In questo articolo, ci concentreremo su come Powershell può aiutarci a eseguire alcune funzionalità di rete comuni dalla riga di comando. Continua a leggere per scoprire di più!

Cos'è Powershell?

Powershell è installabile funzione Windows Server 2008. Per installare Powershell, è necessario installare la funzione Powershell utilizzando l'Aggiunta guidata funzioni. Il processo di installazione richiede circa un minuto e, una volta installato il componente, hai accesso a un fantastico linguaggio di scripting da riga di comando. A differenza di altri linguaggi di scripting in Windows, Powershell è progettato esclusivamente per gli amministratori di sistema. Powershell usa .NET e comandi ("cmdlet" o "command-let") nel suo lavoro. In qualità di utente PS, puoi utilizzare i comandi singolarmente o collegarli insieme per eseguire attività più complesse.

Una volta installato PS, dovresti essere in grado di eseguire Start -> Tutti i programmi -> Windows Powershell 1.0 e premere Windows PowerShell... A questo punto, dovresti avere una finestra CLI blu simile a quella mostrata nella Figura 1.

Figura 1: finestra di comando di Windows PowerShell

Puoi sempre dire che stai lavorando in Powershell, perché la finestra PS ha sempre la seguente riga all'inizio:

PS C: \ Utenti \ Amministratori

Ora che PowerShell è installato e la sua finestra è aperta, lascia che ti mostri alcune attività di rete comuni che possono essere eseguite in PS.

Elenca gli indirizzi IP del tuo server

Per ottenere un elenco di indirizzi IP sul tuo Windows 2008 Server, devi utilizzare il seguente comando:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE - ComputerName. | Seleziona-Oggetto -Proprietà IPAddress

Ecco come appaiono i dati dopo aver usato questo comando sul mio Windows 2008 Server:

Figura 2: elenco degli indirizzi IP utilizzando Windows Powershell

Come puoi vedere dalla figura, i dati iniziali ci mostrano che ho un adattatore con indirizzo IP V4 e indirizzo IP V6 su questo Windows 2008 Server. Questo non è sorprendente di per sé, ma pensa a cosa puoi fare al riguardo usando altre funzioni di scripting.

Come ci insegna il manuale utente di PowerShell, i dati risultanti sono un array e puoi vedere l'indirizzo IP solo inviando questi dati a "Select-Object" (dopo aver disabilitato IPV6), qualcosa del genere:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE - ComputerName. | Seleziona-Oggetto - EspandiProprietà IPAddress

Figura 3: elenco dell'indirizzo IP SOLO con Windows Powershell

Ottenere l'elenco della configurazione della scheda di rete utilizzando Powershell

Per vedere la configurazione di base della tua scheda di rete, puoi utilizzare il seguente comando:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE "ComputerName.

Sebbene questo articolo si concentri sull'utilizzo di PS in Windows Server 2008, questa utility può essere utilizzata anche in Windows XP, Vista o Server 2003. Ecco un esempio dell'output di un comando in esecuzione sulla mia workstation Windows XP:

Figura 4: PowerShell mostra la configurazione della scheda di rete su Windows XP

Testare il polling del computer utilizzando PowerShell

Mentre il prompt dei comandi di PS può ancora eseguire tutti i normali comandi di Windows (come il test di polling), il punto di forza di Powershell è che puoi prendere l'input e modificarlo con facilità.

Ecco un esempio di come è possibile farlo, fornito dalla Guida per l'utente di Windows Powershell. Questo esempio analizza i risultati Win32_PingStatus utilizzando Select-Object. In questo caso, i dati mostrano semplicemente il tempo di risposta e il codice di stato.

Ecco il comando che è stato utilizzato:

Get-WmiObject -Class Win32_PingStatus -Filter "Address =" 127.0.0.1 "" - ComputerName. | Select-Object -Property Address, ResponseTime, StatusCode

Ed ecco i risultati dell'utilizzo del comando sulla mia macchina Windows:

Figura 5: i dati di PowerShell mostrano lo stato di un sondaggio analizzato con Select-Object

Consenti la condivisione di una cartella utilizzando Windows Powershell

Sarò franco con te. L'utilizzo dei comandi Powershell non è sempre facile come utilizzare i comandi Windows esistenti con cui si ha già familiarità. Ecco un esempio.

Il seguente comando PS condividerà la cartella in C: \ temp come "davidtemp" e applicherà ad essa il comando eccellente:

(Get-WmiObject -List -ComputerName. | Where-Object -FilterScript ($ _. Name -eq "Win32_Share")). InvokeMethod ("Crea", ("C: \ temp", "davidtemp", 0.25, "David " s Cartella Temp "))

D'altra parte, potresti semplicemente usare il comando già provato e testato quota netta:

Net share davidtemp = C: \ temp / comment: "David" s Temp Shared Folder "

Figura 6: dati di PowerShell e comando di condivisione di rete tradizionale

Nota che il comando Powershell non è semplicemente fallito, ma mi ha dato un terribile errore. Ho provato questo comando su Windows XP e Vista ed ero l'amministratore di sistema.

D'altra parte, il comando quota netta molto semplice e ha funzionato al primo tentativo. Mentre sto cercando di insegnarti come lavorare con Powershell, tieni presente che Powershell può utilizzare i tradizionali comandi di rete di Windows, che in molti casi sono molto più facili da usare. Tuttavia, potresti trovarti in una situazione in cui questi comandi tradizionali non fanno tutto ciò di cui hai bisogno, ed è qui che entra in gioco Powershell.

Altra rete e comandi più complessi

Se utilizzerai solo i comandi di amministrazione di rete più basilari in Powershell, potresti confonderti e non usarli più, perché come qualsiasi altro linguaggio di scripting, è qui che devi imparare.

Tuttavia, una volta superate le difficoltà di apprendimento e aver imparato a usare questa lingua, avrai a disposizione uno strumento molto efficace e che ti farà risparmiare tempo.

Come avrai notato dagli esempi precedenti, uno dei parametri per la maggior parte dei comandi di Powershell è "nomecomputer". Quando mettiamo un punto (".") Invece di un nome di computer (nomecomputer), sarà l'host locale (il nostro computer). Tuttavia, possiamo anche sostituire qualsiasi indirizzo IP o nome di computer Windows nel dominio, il che ci dà la possibilità di utilizzare questi comandi non solo sul nostro PC, ma anche di creare potenti script in Powershell che possono essere applicati su tutti i computer della rete.

Ad esempio, ecco un comando che trasmette l'indirizzo IP di un computer Dell sulla LAN:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE - ComputerName DELL9400

Ecco i risultati di questo comando:

Figura 7: Risultati Powershell dell'ottenimento dell'indirizzo IP dal PC remoto

Ed ecco un'immagine più grande che mostra le informazioni di cui hai bisogno:

Figura 8: Ingrandimento della finestra dei risultati di Powershell per il recupero dell'indirizzo IP del PC remoto

Quindi, la capacità di lavorare con computer remoti è la caratteristica principale di Powershell, ma un'altra potente caratteristica è la capacità di filtrare i dati e combinare i dati ottenuti dall'utilizzo di comandi diversi.

Dai un'occhiata al seguente esempio:

"127.0.0.1", "localhost", "research.microsoft.com" | ForEach-Object -Process (Get- WmiObject -Class Win32_PingStatus -Filter ("Address =" "+ $ _ +" "") -ComputerName.) | Select-Object -Property Address, ResponseTime, StatusCode

In questo esempio è stato ottenuto un elenco di indirizzi IP e nomi di dominio. Questo elenco è stato passato a "ForEach-Object". Per ciascuno di questi "oggetti" (indirizzo IP/nomi a dominio) è stato utilizzato l'elemento PingStatus "Get-WmiObject". I dati del sondaggio di prova per ciascun nome di dominio sono stati quindi passati attraverso l'oggetto Select, con conseguente visualizzazione solo di indirizzi, tempi di risposta e codici di stato.

Figura 9: Test polling con elenco durante la combinazione e il polling dei dati

A mio parere, questo esempio dimostra alcune delle capacità di Powershell. Come puoi vedere, puoi indirizzare e reindirizzare input e output in direzioni diverse man mano che raggiungi i tuoi obiettivi di amministrazione.

Cos'altro hai bisogno di sapere?

Conclusione

Windows Powershell è un'utilità molto potente. È impossibile descrivere tutto ciò che puoi fare con Powershell in questo articolo, ma spero di essere stato in grado di darti un quadro generale delle capacità di questa utility e di ispirarti a ulteriori ricerche in questo settore. Ogni giorno ci sono nuovi libri, corsi e un sacco di materiale su Internet sulle funzioni di Powershell che possono essere utilizzate dagli amministratori di sistema di Windows. Dato il forte attaccamento degli amministratori di Windows alla GUI, ci vorrà del tempo prima che Powershell venga adottato dalle aziende che non hanno un forte bisogno dello strumento. Sono sicuro che gli amministratori utilizzeranno Powershell per creare script più brevi in ​​grado di gestire attività più complesse. Spero che Powershell continui a crescere in popolarità in tutto il mondo!

Un ringraziamento speciale a Microsoft per aver fornito gli esempi di comandi nella documentazione della Guida per l'utente di Windows Powershell.

PowerShellè un motore software orientato agli oggetti e un linguaggio di scripting con un'interfaccia a riga di comando che offre ai professionisti IT maggiori opportunità per configurare i sistemi operativi della famiglia MS Windows. In poche parole, è una sorta di strumento di amministrazione versatile. In questo articolo verranno illustrate le tecniche di base per la scrittura di script in PowerShell, che consentono di automatizzare la gestione di un ambiente Windows in modo semplice.

PowerShell offre sia un'interfaccia di console pura che un ambiente di sviluppo completo PowerShell ISE(Ambiente di scripting integrato) per gli script. Per avviare la CLI, inserisci powershell dal menu Esegui (WinKey + R). PowerShell ISE viene avviato utilizzando il comando "PowerShell ISE" nello stesso menu.

ISE è preferibile perché offre maggiori opportunità allo sviluppatore grazie all'evidenziazione della sintassi, al completamento automatico del codice e ad altre funzionalità inerenti a molti IDE "grandi".

Scrivere ed eseguire script

Gli script vengono salvati come file con estensione .ps1. Sebbene PowerShell sia stato a lungo una parte nativa di Windows, non è possibile eseguire i suoi script con un semplice doppio clic. Per fare ciò, fai clic con il pulsante destro del mouse sullo script e seleziona "Esegui in PowerShell".

Esistono anche criteri di sistema che limitano l'esecuzione degli script. È possibile controllare le impostazioni dei criteri correnti emettendo il comando Get-ExecutionPolicy. Il risultato sarà uno dei seguenti valori:

  • Limitato- L'esecuzione dello script è vietata. Configurazione standard;
  • AllSigned- puoi eseguire script firmati da uno sviluppatore di fiducia; PowerShell ti chiederà conferma prima di eseguire lo script;
  • RemoteSigned- puoi eseguire i tuoi script o quelli firmati da uno sviluppatore di fiducia;
  • senza restrizioni- puoi eseguire qualsiasi script.

Per iniziare, è necessario modificare l'impostazione dei criteri di avvio in RemoteSigned utilizzando il comando Set-ExecutionPolicy:

Cmdlet

I cmdlet sono comandi con una funzione predefinita, simili alle istruzioni condizionali nei linguaggi di programmazione. Hanno diverse caratteristiche chiave:

  • ci sono cmdlet di sistema, utente e facoltativi;
  • il risultato dell'esecuzione del cmdlet sarà un oggetto o un array di oggetti;
  • I cmdlet possono elaborare i dati e indirizzarli ad altri cmdlet;
  • I cmdlet non fanno distinzione tra maiuscole e minuscole, quindi non c'è differenza tra Get-ADUser, get-aduser e gEt-AdUser;
  • il carattere viene utilizzato come separatore; ...

Ogni cmdlet contiene un verbo e un nome, separati da un trattino. Ad esempio:

  • Get-Processo- visualizzare i processi correnti in esecuzione sul computer;
  • Get-Service- visualizzare un elenco dei servizi e il loro stato;
  • Ottieni-contenuto- visualizzare il contenuto del file specificato, ad esempio Get-Content C:\Windows\System32\drivers\etc\hosts.

Se necessario, è possibile visualizzare un elenco di tutti i cmdlet disponibili utilizzando Get-Help-Category:

Puoi anche creare i tuoi cmdlet.

Parametri

Ogni cmdlet dispone di diversi parametri che ne determinano il funzionamento. PowerShell ISE suggerisce automaticamente tutte le opzioni disponibili, visualizzandone il tipo. Ad esempio, Get-Service-NameW * elenca i servizi che iniziano con W. Se si dimenticano i parametri del cmdlet immesso, utilizzare Get-Member. Ad esempio, Get-Process | Ottieni-membro:

Se non trovi quello che stai cercando o non sei sicuro di come impostare correttamente i parametri, puoi anche eseguire una query per esempi utilizzando il parametro -Examples:

Alcuni cmdlet possono anche essere chiamati con alias, ad esempio, invece di Get-Help, puoi semplicemente scrivere Help.

Quando si scrivono script di grandi dimensioni o lo sviluppo collaborativo, è possibile utilizzare i commenti. Ogni commento inizia con un carattere # e il blocco di commento è delimitato da combinazioni di caratteri<# и #>rispettivamente all'inizio e alla fine.

Trasportatore

PowerShell Consente lo scambio di dati tra cmdlet tramite una pipeline. Ad esempio:

  • Ottieni servizio | SortObject -property Status - ordina i servizi in esecuzione per stato;
  • "Ciao mondo!" | Out-File C: \ ps \ test.txt - scrittura di testo in un file.

È possibile utilizzare più pipeline. Ad esempio, il seguente script elenca i nomi di tutti i servizi tranne quelli arrestati:

Ottieni-servizio | WHERE ($ _. Stato -eq “In esecuzione”) | SELEZIONA nome visualizzato

Conclusione

Quindi questo tutorial offre ai neofiti un'idea di cosa sia PowerShell. Abbiamo anche esaminato le opzioni per modificare i criteri di esecuzione degli script, cos'è un cmdlet, come comunicano utilizzando una pipeline e come ottenere le proprietà dell'oggetto desiderato. Ricorda, puoi utilizzare il cmdlet Get-Help in caso di difficoltà.

Windows PowerShell 2.0 è stato rilasciato con Windows 7 e Windows Server 2008 R2 come parte integrante del sistema. Inoltre, la seconda versione è disponibile per altri sistemi come Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1 e Windows Server 2008.

Se per qualche motivo non hai installato PowerShell, ecco il link dove puoi scaricare PowerShell e trovare informazioni dettagliate su questa shell.

Windows PowerShell è basato e integrato con Microsoft NET Framework. Inoltre, PowerShell fornisce un comodo accesso a COM e ADSI, oltre a consentire di eseguire normali comandi della riga di comando per creare un ambiente unificato in cui gli amministratori possono eseguire varie attività su sistemi locali e remoti.

Lavorare con i team

Gli sviluppatori di PowerShell hanno dotato questo wrapper di un linguaggio di scripting personalizzato creato secondo lo standard .NET Framework. Il comando in PowerShell è chiamato cmdlet o cmdlet nell'originale. Un cmdlet è come una funzione in quanto esegue un'attività specifica, ad esempio il recupero del contenuto di una cartella o l'aggiornamento di una voce di registro, e dispone di parametri che possono modificare l'output del comando.

Oltre 100 comandi sono integrati in PowerShell. Puoi anche creare comandi aggiuntivi, ma dovresti usare un linguaggio .NET come Visual Basic .NET o C #.

Ogni variazione del comando è una combinazione verbo-sostantivo. Questo perché Microsoft voleva utilizzare uno schema di denominazione coerente per semplificare l'apprendimento e l'estensione di PowerShell. Il verbo indica l'azione da eseguire e il sostantivo indica il tipo di oggetto su cui verrà eseguita questa azione. Ad esempio, il comando Get-ChildItem legge un elenco di elementi nella directory di lavoro o nel contenitore corrente, come un registro. Per eseguire un comando, immetterlo al prompt dei comandi di PowerShell e premere invio. Il risultato del comando verrà visualizzato immediatamente sotto il comando inserito.

Riso. 1. Comando Get-ChildItem

Comandi per ottenere aiuto

PowerShell viene fornito con una serie di file della guida e prima devi imparare a lavorare con questi materiali della guida. Per scoprire quali comandi sono disponibili in PowerShell, usa il comando Get-Command. La Figura 2 mostra l'output di questo comando, questo è un elenco di comandi. In questo elenco, puoi vedere i nomi dei comandi e la loro sintassi, ma non c'è una descrizione di cosa fa ogni comando.

Figura 2. Get-Comando

È possibile utilizzare il comando Get-Help per ottenere queste informazioni. Se inseriamo solo Get-Help, otteniamo aiuto per se stesso.

Riso. 3. Comando Ottieni-Aiuto

Come puoi vedere dal comando Get-Help, per ottenere aiuto per un comando specifico, devi inserire il nome del comando subito dopo Get-Help. Vediamo l'aiuto per il comando Get-Command che già conosciamo. Per fare ciò, introduciamo:

Riso. 4. Aiuto nella squadra. Ottieni-Aiuto Ottieni-Comando

Get-Command, in questo caso, è un parametro del comando Get-Help e, come i parametri del comando nella riga di comando cmd.exe, i parametri del comando PowerShell forniscono le informazioni necessarie ai comandi per svolgere il proprio lavoro.

Ora vediamo come funziona il tutto. Facciamo un esempio. Uno dei compiti tipici di un amministratore di sistema è leggere file di testo. Vediamo un elenco di cmdlet che iniziano con Get (Get-Help, Get-Command, ecc.). Per fare ciò, utilizzeremo Get-Help e specificheremo Get come parametro:

Riso. 5. Ottieni aiuto Ottieni comando

Abbiamo un elenco di comandi che iniziano con Get. Usiamo il comando Get-Content per lavorare con i file. Vediamo le informazioni della guida sul comando Get-Content. Per fare ciò, introduciamo:

Riso. 6. Comando Get-Help Get-Content

Come mostrato nella Figura 6, il comando Get-Help Get-Content restituisce una descrizione del comando Get-Content e informazioni sulla sua sintassi. Abbiamo appreso da questo aiuto che il comando Get-Content restituisce il contenuto di un elemento, che in questo caso punta a qualsiasi tipo di file nel sistema. In passato, un amministratore avrebbe dovuto usare il comando For per lavorare con file batch o File-SystemObject in uno script Windows Script Host (WSH), ma in PowerShell è sufficiente eseguire il comando Get-Content. Per ottenere informazioni più dettagliate sulla sintassi, aggiungi il parametro -full al comando:

Riso. 7. Comando Get-Help Get-Content -full

Nota che il parametro -full non è di base. I parametri di questo tipo sono chiamati parametri di commutazione perché in qualche modo alternano il comportamento dei comandi.

La Figura 7 mostra alcune delle informazioni restituite da questo comando. L'amministratore dovrà scorrere o ridimensionare la finestra sul proprio computer in modo che tutto il contenuto possa essere visualizzato. La sezione PARAMETRI della guida contiene una descrizione dei parametri che possono essere aggiunti a un comando per modificare il risultato che restituisce. Prestare attenzione a due punti importanti sui parametri: Necessario?(richiesto inglese) e Posizione?(Posizione ing.).

Paragrafo Necessario?(Obbligatorio) indicare se un dato parametro è obbligatorio o meno. Quando è richiesta una variabile? (Obbligatorio in inglese) è impostato su true, il parametro deve essere incluso nel comando. Se è richiesta la stessa variabile? (Obbligatorio) è impostato su false, questo parametro è facoltativo e può essere omesso quando si utilizza il comando.

Senso Posizione?(Position English) permette di giudicare se un parametro necessita di un nome o se può essere referenziato dalla sua posizione. Quando è variabile di posizione? (Posizione inglese) viene assegnato il valore denominato, da ciò ne consegue che quando si fa riferimento a questo parametro, se ne deve indicare il nome. Quando è il valore della variabile Posizione? (Posizione in inglese) è espresso come un numero, un parametro può essere referenziato con il suo nome o semplicemente indicare il valore del parametro nella sua posizione corretta.

Ad esempio, come mostrato nella Figura 8, quando si esegue il comando Get-Content, è necessario specificare il parametro -Path, esaminiamo questo parametro in modo più dettagliato.

Riso. 8. Parametro -Percorso

In una variabile Necessario? vale il valore vero, il che significa che questo parametro è obbligatorio per il comando Get-Content. In una variabile Posizione? c'è un valore di 1, questo significa che puoi omettere il nome del parametro quando lo inserisci, devi solo inserirlo subito dopo il nome del comando (1a posizione).

Riso. 9. Comando Get-Content E: 01.txt

Dove E: 01.txt è il parametro -Path

Riso. 10. File E: 01.txt.

Se il valore del parametro contiene spazi, il valore deve essere racchiuso tra virgolette.

Nella sezione aiuto PARAMETRI ogni nome di parametro è seguito dalle informazioni racchiuse tra parentesi angolari (< >). Queste informazioni indicano il tipo di dati a cui dovrebbe corrispondere il valore del parametro. Come mostrato nella Figura 8, il valore del parametro -Path deve essere una stringa. Se il nome del tipo è seguito da parentesi quadre (stringa), significa che è possibile utilizzare un array di stringhe come valore del parametro. Nel caso si utilizzino parametri switch, come ad esempio il parametro -Full, che non assumono valori, allora il tipo di dati verrà specificato come .

Riso. 11. Parametro -Pieno

Un'altra caratteristica relativa ai parametri in PowerShell degna di nota è la funzionalità di completamento automatico per le combinazioni nome-parametro. L'utente deve solo inserire un numero sufficiente di lettere che compongono il nome del parametro in modo che possa essere distinto dagli altri parametri. Quindi, il comando Get-Help Get-Content -full equivalente al comando Get-Help Get-Content -ful. Nella sezione aiuto APPUNTI ci sono anche esempi di come puoi usare questo o quel comando. La Figura 12 mostra 3 esempi di utilizzo del comando Get-Help.

Riso. 12. Esempi di utilizzo del comando Get-Help

Ottenere aiuto sui concetti

PowerShell viene fornito con una serie di file della guida che forniscono panoramiche di vari concetti. Ogni file inizia con i caratteri " di_"E finisce con il nome della sezione. Per visualizzare un elenco alfabetico delle sezioni about, eseguire il comando:

Riso. 13. Ottieni-Aiuto su * comando

Per visualizzare le informazioni su un argomento specifico, è sufficiente includere il nome completo dell'argomento nel valore del parametro. Ad esempio, vediamo l'aiuto sugli alias. Per fare ciò, esegui il comando:

Riso. 14. Comando Get-Help about_aliases

La Figura 14 mostra una parte dei dati della Guida risultanti dal comando Get-Help about_aliases. Come possiamo vedere, il file della guida fornisce una panoramica dei passaggi per creare e gestire gli alias in PowerShell.

Utilizzo di alias

Alcuni nomi di comandi possono essere piuttosto lunghi, il che è fastidioso se devi inserire i comandi più e più volte dalla tastiera. Fortunatamente, i progettisti di PowerShell hanno fornito la possibilità di utilizzare alias per fare riferimento ai comandi. Un alias è un nome alternativo che di solito è molto più corto del nome effettivo del comando. PowerShell include una serie di alias incorporati, oltre ai quali gli utenti possono creare i propri alias.

Per visualizzare gli alias disponibili durante la sessione corrente, esegui il comando Get-Alias:

Riso. 15. Comando Get-Alias

La sessione corrente si riferisce alla connessione corrente al processore PowerShell. All'avvio di PowerShell, l'utente avvia una nuova sessione; questa sessione continua finché l'utente non chiude PowerShell, interrompendo così la connessione. Oltre a tutti gli alias incorporati e ai relativi comandi associati, Get-Alias ​​mostra tutti gli alias creati durante la sessione corrente, nonché gli alias impostati nei profili, che sono impostazioni di configurazione definite dall'utente caricate in PowerShell ogni volta che viene avviata la shell .

Se vuoi vedere gli alias associati a un comando, sii specifico sul comando Get-Alias. Ad esempio, per visualizzare gli alias associati a Get-ChildItem, eseguire il comando:

Riso. 16. Comando Get-Alis -definizione Get-ChildItem

Come mostrato nella Figura 16, PowerShell include tre alias per l'accesso al comando Get-ChildItem, gci, ls e dir. Ognuno di essi può essere utilizzato al posto del nome del comando. Pertanto, ciascuno dei seguenti quattro comandi elenca il contenuto della directory C::

Riso. 17. Comandi Get-ChildItem c: e dir c:

Se vogliamo creare il nostro alias in PowerShell, il comando Set-Alias ​​ci aiuterà. Creiamo un alias per il comando Get-Help. Usiamo l'abbreviazione hlp. Il comando di cui abbiamo bisogno sarà simile a questo:

Riso. 18. Comando Set-Alias ​​hlp Get-Help e alias hlp generato

Successivamente, ogni volta che è necessario eseguire il comando Get-Help, è possibile utilizzare l'alias hlp. Questo alias può essere utilizzato fino al termine della sessione (ovvero, prima della chiusura di PowerShell). Si noti che non è possibile includere parametri durante la definizione di un alias, è possibile utilizzare solo il nome del comando. Se vuoi definire un riferimento a un comando e ai suoi parametri, devi creare una funzione speciale.

Conclusione

Hai imparato come visualizzare tutti i comandi disponibili in PowerShell e come visualizzare le informazioni della guida per ciascuno di questi comandi. Vai avanti e studia cosa stanno facendo questi comandi. Sperimenta con parametri diversi e impara a creare e utilizzare alias e presto imparerai a usare PowerShell.


Quasi tutti gli amministratori hanno familiarità con Windows PowerShell in questi giorni. Molti lo hanno scaricato, sperimentato e risolto compiti non standard che a volte eseguono nella shell dei comandi di Windows tramite cmd.exe. Tuttavia, PowerShell è molto più di una semplice shell di comando simile a DOS. È un ambiente da riga di comando e script basato su Microsoft .NET Common Language Runtime (CLR) e .NET Framework. In PowerShell, lavori con oggetti .NET. Le strutture di cartelle che vedi oi servizi a cui accedi sono essenzialmente istanze degli oggetti che rappresentano quelle cartelle e quei servizi; questa è la differenza tra il prodotto in questione e altre shell di comando che possono elaborare solo testi. Pertanto, PowerShell è di gran lunga superiore in termini di potenza ed efficienza alle tradizionali shell di comando.

Per aiutare i tuoi lettori a sfruttare appieno questo strumento, ho preparato una serie di articoli che spiegano come risolvere vari problemi utilizzando PowerShell. Nella prima "lezione", ti mostrerò come iniziare a utilizzare PowerShell e come eseguire i comandi di base. Spiegherò anche come ottenere assistenza in PowerShell durante la creazione di questi comandi e come utilizzare gli alias nei comandi.

Primi passi

PowerShell non viene fornito con Windows in questo momento, ma questo cambierà con Windows Server 2008. I collegamenti alle risorse da cui è possibile scaricare PowerShell e le informazioni sulla shell sono disponibili nella pagina Web di Windows PowerShell (www.microsoft.com/powershell). Prima di scaricare PowerShell, è necessario che .NET Framework 2.0 sia installato sul sistema. Il processo di installazione di PowerShell è semplice e veloce. Devi solo assicurarti che la versione di PowerShell che installi sia compatibile con il tuo sistema operativo. Microsoft sta rilasciando versioni per Windows Server 2008 beta 3, Windows Vista, Windows XP SP2 e Windows Server 2003. Per questo articolo, ho utilizzato la versione Windows XP di PowerShell.

Una volta completata l'installazione di PowerShell, sei pronto per iniziare subito a lavorare. Per avviare PowerShell, seleziona Tutti i programmi dal menu Start, quindi seleziona Windows PowerShell 1.0 e Windows PowerShell. Quando viene visualizzata una finestra di PowerShell, il prompt dei comandi mostra la cartella di lavoro corrente (sul mio sistema, questa è la directory C). Ora puoi iniziare a scrivere ed eseguire comandi PowerShell.

Lavorare con i team

Gli sviluppatori di PowerShell hanno dotato questo wrapper di un linguaggio di scripting personalizzato creato secondo lo standard .NET Framework. Il cmdlet di PowerShell è simile a una funzione in quanto esegue un'attività specifica, ad esempio il recupero del contenuto di una cartella o l'aggiornamento di una voce di registro.

Oltre 100 comandi sono integrati in PowerShell. È possibile creare comandi aggiuntivi, ma è necessario utilizzare un linguaggio .NET come Visual Basic .NET o C#. Gli articoli di PowerShell parleranno solo dei comandi incorporati. Ogni variazione del comando è una combinazione verbo-sostantivo; Questo perché Microsoft voleva utilizzare uno schema di denominazione coerente per semplificare l'apprendimento e l'estensione di PowerShell. Il verbo indica l'azione da compiere e il sostantivo indica il tipo di oggetto a cui sarà diretta l'azione. Ad esempio, il comando Get-ChildItem legge un elenco di elementi nella directory di lavoro o nel contenitore corrente, come un registro. Per eseguire un comando, immetterlo al prompt dei comandi di PowerShell e premere invio. I risultati vengono visualizzati sotto la riga di comando. Questo è tutto ciò che c'è da sapere sull'esecuzione dei comandi di base.

Probabilmente, non in tutti i casi si sa se esiste un comando per risolvere il compito da eseguire, e talvolta è difficile mantenere in memoria il nome di un particolare comando. È possibile visualizzare un elenco di tutti i comandi eseguendo il comando Get-Command. La Figura 1 mostra una parte di questo elenco; lì puoi vedere i nomi e la sintassi dei comandi, ma non una descrizione di cosa fa esattamente il comando corrispondente. È possibile utilizzare il comando Get-Help per ottenere queste informazioni.

Comandi per ottenere aiuto

PowerShell viene fornito con una serie di file della guida a cui un utente può accedere direttamente da una finestra di comando di PowerShell utilizzando il comando Get-Help. Per ottenere informazioni della guida su un comando, utilizzare il comando Get-Help con il parametro -name. Dopo questo parametro, è necessario specificare il nome del comando, informazioni su cui si desidera ottenere. Come i parametri del comando del processore cmd.exe, i parametri del comando PowerShell forniscono le informazioni necessarie ai comandi per svolgere il proprio lavoro. Ma a differenza dei parametri dei comandi in cmd.exe (che può iniziare con un trattino, una barra o nessun carattere iniziale), i parametri dei comandi di PowerShell iniziano sempre con un trattino, il che conferma ulteriormente la convenzione di denominazione utilizzata in PowerShell.

Ora vediamo come funziona il tutto. Facciamo un esempio. Uno dei compiti tipici di un amministratore di sistema è leggere file di testo. Dopo aver esaminato l'elenco dei comandi forniti dal comando Get-Command, si conclude che il comando Get-Content può eseguire questa attività, ma non si è sicuri. Per visualizzare le informazioni della guida per il comando Get-Content, eseguire il comando seguente:

Get-Help -name Get-Content

Come mostra la Figura 2, questo comando restituisce una descrizione del comando e informazioni sulla sintassi. Il comando restituisce il contenuto dell'elemento, che in questo caso punta a qualsiasi tipo di file nel sistema. In passato, un amministratore avrebbe dovuto usare il comando For per lavorare con file batch o File-SystemObject in uno script Windows Script Host (WSH), ma in PowerShell è sufficiente eseguire il comando Get-Content. Per informazioni sulla sintassi più dettagliate, aggiungere il parametro -full al comando.

Get-Help -name Get-Content -full

Si noti che il parametro -full non assume un valore corrispondente. I parametri di questo tipo sono chiamati parametri di commutazione perché in qualche modo alternano il comportamento dei comandi.

La Figura 3 mostra alcune delle informazioni restituite da questo comando. L'amministratore dovrà scorrere o ridimensionare la finestra sul proprio computer in modo che tutto il contenuto possa essere visualizzato. La sezione PARAMETRI contiene le informazioni necessarie per includere i parametri in un comando. Nota due importanti categorie di informazioni per ogni parametro: Obbligatorio e Posizione.

Le informazioni nella categoria Richiesto indicano se il parametro è obbligatorio o facoltativo. Quando Required è true, il parametro deve essere incluso nel comando. Se Required è impostato su false, questo parametro è facoltativo.

Il valore della categoria Posizione consente di giudicare se a un parametro deve essere assegnato un nome o può essere referenziato dalla sua posizione. Quando alla variabile Posizione viene assegnato il valore denominato, ne consegue che quando si fa riferimento a questo parametro, se ne deve specificare il nome. Quando il valore della variabile Posizione è espresso come numero, il parametro può essere referenziato con il suo nome, o semplicemente indicare il valore del parametro nella sua posizione corretta.

Ad esempio, come mostra la Figura 3, il parametro -path è obbligatorio durante l'esecuzione del comando Get-Content. Tuttavia, il valore di questo parametro può essere specificato nella prima posizione senza inserire il nome del parametro, come nell'esempio seguente:

Get-Content c: sample.txt

Se il valore del parametro contiene spazi, il valore deve essere racchiuso tra virgolette.

Nella sezione PARAMETRI, ogni nome di parametro è seguito dalle informazioni racchiuse tra parentesi angolari (). Queste informazioni indicano il tipo di dati a cui dovrebbe corrispondere il valore del parametro. Come mostra la Figura 3, il valore per il parametro -path deve essere una stringa. Se una stringa di parole è seguita da un insieme di parentesi (), significa che è possibile utilizzare un array di stringhe come valore del parametro.

In caso di utilizzo di parametri switch che non accettano valori, i dati saranno di tipo read. Con questo tipo di dati, ad esempio, viene definito il parametro -force del comando Get-Content. Questo parametro sovrascrive qualsiasi restrizione che potrebbe impedire l'esecuzione del comando. L'annullamento avviene solo quando il parametro è incluso nel comando.

Un'altra caratteristica relativa ai parametri in PowerShell degna di nota è la funzionalità di completamento automatico per le combinazioni nome-parametro. L'utente deve solo inserire un numero sufficiente di lettere che compongono il nome del parametro in modo che possa essere distinto dagli altri parametri. Quindi, il comando

Get-Content c: sample.txt -force

equivalente al comando

Get-Content c: sample.txt -fo

Oltre alle informazioni sui parametri necessari per creare i comandi, il file della guida per il comando Get-Content include esempi che illustrano come utilizzare il comando, note utili nella sezione Note e risorse per ulteriori informazioni. È bello notare che i file di aiuto sono forniti per tutti i comandi - ci sono anche file di aiuto che descrivono concetti generali.

Ottenere aiuto sui concetti

PowerShell viene fornito con una serie di file della guida che forniscono panoramiche di vari concetti. Ogni file inizia con i caratteri "about_" e termina con il nome della sezione. Per vedere un elenco alfabetico degli argomenti, esegui il comando

Per visualizzare le informazioni su un argomento specifico, è sufficiente includere il nome completo dell'argomento nel valore del parametro. Ad esempio, per leggere un file di controllo del flusso, è necessario eseguire il comando

Ottieni-Aiuto about_flow_control

La Figura 4 mostra alcuni dei dati risultanti. Come possiamo vedere, il file fornisce una panoramica delle attività finalizzate all'implementazione della gestione del flusso di dati negli script PowerShell.

Utilizzo di alias

Alcuni nomi di comandi possono essere piuttosto lunghi, il che è fastidioso se devi inserire i comandi più e più volte dalla tastiera. Fortunatamente, i progettisti di PowerShell hanno fornito la possibilità di utilizzare alias per fare riferimento ai comandi. Un alias è un nome alternativo che di solito è molto più corto del nome effettivo del comando. PowerShell include una serie di alias incorporati, oltre ai quali gli utenti possono creare i propri alias.

Per visualizzare gli alias disponibili nella sessione corrente, è necessario eseguire il comando Get-Alias. La sessione corrente si riferisce alla connessione corrente al processore PowerShell. All'avvio di PowerShell, l'utente avvia una nuova sessione; questa sessione continua finché l'utente non chiude PowerShell, interrompendo così la connessione. Oltre a tutti gli alias incorporati e ai relativi comandi associati, Get-Alias ​​mostra tutti gli alias creati durante la sessione corrente, nonché gli alias impostati nei profili, che sono impostazioni di configurazione definite dall'utente caricate in PowerShell ogni volta che viene avviata la shell . Esamineremo i profili in uno dei seguenti articoli.

Se vuoi vedere gli alias associati a un comando, sii specifico sul comando Get-Alias. Ad esempio, per visualizzare gli alias associati a Get-ChildItem, eseguire il comando

Get-Alias ​​|
Dove-Oggetto ($ _. Definizione `
– Abbina "Get-ChildItem")

Questo comando include diversi elementi, che tratterò in dettaglio nelle lezioni seguenti. Per ora, l'unica cosa che devi sapere è che l'output del comando Get-Alias ​​viene indirizzato al comando Where-Object, che filtra tutti i risultati che non corrispondono a Get-ChildItem. Se vuoi vedere gli alias allocati per un altro comando, sostituisci Get-ChildItem con il nome di quel comando.

Come mostra la Figura 5, PowerShell include tre alias per l'accesso al comando Get-ChildItem, gci, ls e dir. Ognuno di essi può essere utilizzato al posto del nome del comando. Pertanto, ciascuno dei seguenti quattro comandi elenca il contenuto della directory C: Windows:

Get-ChildItem c: windows
dir c: windows
ls c: windows
gci c: windows

Usa il comando Set-Alias ​​per creare un alias per la sessione corrente. Ad esempio, per creare un alias cnt per accedere a Get-Content, eseguire il comando

Set-Alias ​​cnt Get-Content

Successivamente, ogni volta che è necessario eseguire il comando Get-Content, è possibile utilizzare l'alias cnt. Questo alias può essere utilizzato fino al termine della sessione (ovvero, prima della chiusura di PowerShell). Nota che quando definisci un alias, non hai la possibilità di includere i parametri; è possibile utilizzare solo il nome del comando. Se vuoi definire un riferimento a un comando e ai suoi parametri, devi creare una funzione speciale.

prospettive

Quindi, nella prima lezione, ti ho presentato i componenti fondamentali necessari per iniziare a esplorare e utilizzare i comandi PowerShell, che consistono in uno o più comandi. Nei prossimi articoli spiegherò come utilizzare questi comandi e come creare script per sfruttare tutte le funzionalità di PowerShell. Per ora, inizia a lavorare con i team. Usa il file della guida di PowerShell per creare comandi e apprendere concetti specifici. Sperimenta con diversi parametri e impara a creare e utilizzare alias. In breve tempo, sarai pronto per utilizzare PowerShell per le tue attività quotidiane.

Robert Sheldon ([e-mail protetta]) - consulente tecnico e autore di un gran numero di libri su tecnologie e database di Microsoft Windows

Annotazione: Descrive le funzionalità di Windows PowerShell e le sue differenze dalle shell tradizionali e dai linguaggi di scripting. Discute i concetti di base di PowerShell (tipi di comando, struttura di cmdlet, alias di comando). Funzionalità del sistema di aiuto di PowerShell

È possibile scaricare PowerShell da Microsoft accedendo a http://microsoft.com/powershell, che contiene collegamenti al file di installazione più recente e ai pacchetti di documentazione in diverse lingue. Dopo aver eseguito il file scaricato, seguire le istruzioni della procedura guidata di installazione. Nelle versioni a 32 bit di Windows, PowerShell è installato per impostazione predefinita nella directory. Nelle versioni a 64 bit di Windows, la versione a 32 bit di PowerShell è installata nella directory % SystemRoot% \ SystemWow64 \ WindowsPowerShell \ v1.0 e la versione a 64 bit di Windows PowerShell è installata nella directory % SystemRoot% \ System32 \ WindowsPowerShell \ v1.0.

Tipi di comandi PowerShell

PowerShell supporta quattro tipi di comandi: cmdlet, funzioni, script ed eseguibili esterni.

Il primo tipo è il cosiddetto cmdlet. Finora questo termine è stato utilizzato solo all'interno di PowerShell. Il cmdlet è una classe .NET che deriva dalla classe base Cmdlet; I cmdlet vengono sviluppati utilizzando PowerShell Software Developers Kit (SDK). Una singola classe Cmdlet di base garantisce una sintassi coerente per tutti i cmdlet e automatizza anche l'analisi dei parametri della riga di comando e la descrizione della sintassi dei cmdlet per la guida in linea.

Questo tipo di comando viene compilato in una libreria a collegamento dinamico (DLL) e caricato nel processo PowerShell all'avvio della shell (ovvero, i cmdlet stessi non possono essere eseguiti come applicazioni, ma contengono oggetti eseguibili). Poiché il codice compilato viene caricato nel processo della shell, questo tipo di comando viene eseguito in modo più efficiente. I cmdlet sono analoghi a team interni involucri tradizionali.

Il prossimo tipo di comando sono le funzioni. Una funzione è un blocco di codice PowerShell denominato e che risiede in memoria fino al termine della sessione di shell corrente. Le funzioni, come i cmdlet, supportano i parametri denominati. La sintassi di una funzione viene analizzata una volta quando viene dichiarata.

Uno script è un blocco di codice PowerShell archiviato in un file esterno con estensione ps1. La sintassi dello script viene analizzata ogni volta che viene eseguito.

L'ultimo tipo di comando sono file eseguibili esterni, che vengono eseguiti normalmente dal sistema operativo.

Principali articoli correlati