Powershell - Guida rapida

Windows PowerShell è un file command-line shell e scripting languageprogettato appositamente per l'amministrazione del sistema. È analogo in Linux si chiama Bash Scripting. Basato su .NET Framework, Windows PowerShell aiuta i professionisti IT a controllare e automatizzare l'amministrazione del sistema operativo Windows e delle applicazioni eseguite in ambiente Windows Server.

Comandi di Windows PowerShell, chiamati cmdlets, consentono di gestire i computer dalla riga di comando. I provider di Windows PowerShell consentono di accedere agli archivi dati, come il registro e l'archivio certificati, con la stessa facilità con cui si accede al file system.

Inoltre, Windows PowerShell ha un ricco parser di espressioni e un linguaggio di scripting completamente sviluppato. Quindi in parole semplici puoi completare tutte le attività che fai con la GUI e molto altro ancora.

PowerShell ISE

Il Windows PowerShell Integrated Scripting Environment(ISE) è un'applicazione host per Windows PowerShell. In Windows PowerShell ISE, è possibile eseguire comandi e scrivere, testare ed eseguire il debug di script in un'unica interfaccia utente grafica basata su Windows con modifica su più righe, completamento con tabulazione, colorazione della sintassi, esecuzione selettiva, guida sensibile al contesto e supporto per il diritto di -lingue sinistre.

È possibile utilizzare voci di menu e scelte rapide da tastiera per eseguire molte delle stesse attività che si eseguiranno nella console di Windows PowerShell. Ad esempio, quando si esegue il debug di uno script in Windows PowerShell ISE, per impostare un punto di interruzione di riga in uno script, fare clic con il pulsante destro del mouse sulla riga di codice e quindi fare clic suToggle Breakpoint.

Comandi di base di PowerShell

Ci sono molti comandi di PowerShell ed è molto difficile inserire tutti questi comandi in questo tutorial, ci concentreremo su alcuni dei comandi più importanti e di base di PowerShell.

Il primo passo è andare al comando Get-Help che ti dà una spiegazione su come dare un comando e il suo parametro.

L'icona di PowerShell si trova nella barra delle applicazioni e nel menu di avvio. Basta fare clic sull'icona, si aprirà.

Per aprirlo è sufficiente fare clic sull'icona e quindi si aprirà la seguente schermata che significa che PowerShell è pronto per il tuo lavoro.

Versione di PowerShell

L'ultima versione di PowerShell è la 5.0 e per verificare cosa è installato nel nostro server digitiamo il seguente comando: :$PSVersionTable come mostrato nello screenshot seguente e dallo schermo sappiamo anche che abbiamo PSVersion 4.0

Per aggiornare con l'ultima versione in cui ha più cmdlet dobbiamo scaricare Windows Management Framework 5.0 dal seguente link - https://www.microsoft.com/en-us/download/details.aspx?id=50395 e installalo.

PowerShell ISE

Il Windows PowerShell Integrated Scripting Environment(ISE) è un'applicazione host per Windows PowerShell. In Windows PowerShell ISE, è possibile eseguire comandi e scrivere, testare ed eseguire il debug di script in un'unica interfaccia utente grafica basata su Windows con modifica su più righe, completamento con tabulazione, colorazione della sintassi, esecuzione selettiva, guida sensibile al contesto e supporto per il diritto di -lingue sinistre.

È possibile utilizzare voci di menu e scelte rapide da tastiera per eseguire molte delle stesse attività che si eseguiranno nella console di Windows PowerShell. Ad esempio, quando si esegue il debug di uno script in Windows PowerShell ISE, per impostare un punto di interruzione di riga in uno script, fare clic con il pulsante destro del mouse sulla riga di codice e quindi fare clic suToggle Breakpoint.

Per aprirlo basta andare su Start - Cerca e poi su Tipo - PowerShell come mostrato nello screenshot seguente.

Quindi fare clic su Windows PowerShell ISE. Oppure fare clic sulla freccia verso il basso come mostrato nella seguente schermata.

Elencherà tutte le applicazioni installate sul server e quindi farà clic su Windows PowerShell ISE.

Sarà aperta la seguente tabella:

Ha tre sezioni, che includono: The PowerShell Console con il numero 1, quindi Scripting File numero 2 e il terzo è il Command Module dove puoi trovare il modulo.

Durante la creazione dello script puoi eseguire direttamente e vedere il risultato come nell'esempio seguente:

Comandi di base di PowerShell

Ci sono molti comandi di PowerShell ed è molto difficile inserire tutti questi comandi in questo tutorial, ci concentreremo su alcuni dei comandi più importanti e di base di PowerShell.

Il primo passo è andare al comando Get-Help che ti dà una spiegazione su come dare un comando e il suo parametro.

To get the list of Updates -

  • Get-HotFix e per installare una correzione rapida come segue
  • Get-HotFix -id kb2741530

Un cmdlet o "Command let" è un comando leggero utilizzato nell'ambiente Windows PowerShell. Il runtime di Windows PowerShell richiama questi cmdlet al prompt dei comandi. È possibile crearli e richiamarli a livello di codice tramite le API di Windows PowerShell.

Cmdlet vs Command

I cmdlet sono molto diversi dai comandi in altri ambienti della shell dei comandi nei seguenti modi:

  • I cmdlet sono oggetti di classe .NET Framework; e non solo eseguibili autonomi.

  • I cmdlet possono essere facilmente costruiti da una dozzina di righe di codice.

  • L'analisi, la presentazione degli errori e la formattazione dell'output non vengono gestiti dai cmdlet. Viene eseguito dal runtime di Windows PowerShell.

  • Il processo dei cmdlet funziona sugli oggetti non sul flusso di testo e gli oggetti possono essere passati come output per il pipelining.

  • I cmdlet sono basati sui record poiché elaborano un singolo oggetto alla volta.

Ottenere aiuto

Il primo passo è andare al comando Get-Help che ti dà una spiegazione su come dare un comando e il suo parametro.

Di seguito sono riportati gli esempi di script PowerShell su file e cartelle.

Sr.No. Funzionamento e descrizione
1 Creazione di cartelle

Script di esempio per mostrare come creare cartelle utilizzando gli script di PowerShell.

2 Creazione di file

Script di esempio per mostrare come creare file utilizzando gli script di PowerShell.

3 Copia di cartelle

Script di esempio per mostrare come copiare i file utilizzando gli script di PowerShell.

4 Copia di file

Script di esempio per mostrare come creare file utilizzando gli script di PowerShell.

5 Eliminazione di cartelle

Script di esempio per mostrare come eliminare le cartelle utilizzando gli script di PowerShell.

6 Eliminazione di file

Script di esempio per mostrare come eliminare i file utilizzando gli script di PowerShell.

7 Spostamento di cartelle

Script di esempio per mostrare come spostare le cartelle utilizzando gli script di PowerShell.

8 Spostamento di file

Script di esempio per mostrare come spostare i file utilizzando gli script di PowerShell.

9 Rinomina cartelle

Script di esempio per mostrare come rinominare le cartelle utilizzando gli script di PowerShell.

10 Rinomina file

Script di esempio per mostrare come rinominare i file utilizzando gli script di PowerShell.

11 Recupero elemento in corso

Script di esempio per mostrare come recuperare gli elementi utilizzando gli script di PowerShell.

12 Controlla l'esistenza della cartella

Script di esempio per mostrare come controllare l'esistenza della cartella utilizzando gli script di PowerShell.

13 Controlla l'esistenza del file

Script di esempio per mostrare come controllare l'esistenza dei file utilizzando gli script di PowerShell.

Di seguito sono riportati gli esempi di script PowerShell su Data e ora di sistema.

Sr.No. Funzionamento e descrizione
1 Ottieni data di sistema

Script di esempio per mostrare come ottenere la data di sistema utilizzando gli script di PowerShell.

2 Imposta data di sistema

Script di esempio per mostrare come impostare la data di sistema utilizzando gli script di PowerShell.

3 Ottieni ora di sistema

Script di esempio per mostrare come ottenere l'ora di sistema utilizzando gli script di PowerShell.

4 Imposta ora di sistema

Script di esempio per mostrare come impostare l'ora di sistema utilizzando gli script di PowerShell.

Di seguito sono riportati gli esempi di script PowerShell per la creazione e la lettura di diversi tipi di file.

Sr.No. Funzionamento e descrizione
1 Crea file di testo

Script di esempio per mostrare come creare un file di testo utilizzando gli script di PowerShell.

2 Leggi file di testo

Script di esempio per mostrare come leggere un file di testo utilizzando gli script di PowerShell.

3 Crea file XML

Script di esempio per mostrare come creare un file XML utilizzando gli script di PowerShell.

4 Leggi il file XML

Script di esempio per mostrare come leggere un file XML utilizzando gli script di PowerShell.

5 Crea file CSV

Script di esempio per mostrare come creare un file CSV utilizzando gli script di PowerShell.

6 Leggi il file CSV

Script di esempio per mostrare come leggere un file CSV utilizzando gli script di PowerShell.

7 Crea file HTML

Script di esempio per mostrare come creare un file HTML utilizzando gli script di PowerShell.

8 Leggi il file HTML

Script di esempio per mostrare come leggere un file HTML utilizzando gli script di PowerShell.

9 Cancellazione del contenuto del file

Script di esempio per mostrare come cancellare il contenuto dei file utilizzando gli script di PowerShell.

10 Aggiungi dati di testo

Script di esempio per mostrare come aggiungere testo al contenuto di un file utilizzando gli script di PowerShell.

Cmdlet

Un cmdlet o "Command let" è un comando leggero utilizzato nell'ambiente Windows PowerShell. Il runtime di Windows PowerShell richiama questi cmdlet al prompt dei comandi. È possibile crearli e richiamarli a livello di codice tramite le API di Windows PowerShell. Di seguito sono riportati esempi di utilizzo avanzato dei cmdlet.

Sr.No. Tipo e descrizione cmdlet
1 Cmdlet Get-Unique

Programma di esempio per mostrare Get-Unique Cmdlet.

2

Group-Object Cmdlet

Programma di esempio per mostrare il cmdlet Group-Object.

3 Cmdlet Misura-Oggetto

Programma di esempio per mostrare il cmdlet Misura-Oggetto.

4 Cmdlet Compare-Object

Programma di esempio per mostrare il cmdlet Compare-Object.

5 Cmdlet Format-List

Programma di esempio per mostrare il cmdlet Format-List.

6 Cmdlet a livello di formato

Programma di esempio per mostrare il cmdlet a livello di formato.

7 Cmdlet Where-Object

Programma di esempio per mostrare il cmdlet Where-Object.

8 Cmdlet Get-ChildItem

Programma di esempio per mostrare il cmdlet Get-ChildItem.

9 Cmdlet ForEach-Object

Programma di esempio per mostrare il cmdlet ForEach-Object.

10 Comando Start-Sleep

Programma di esempio per mostrare il cmdlet Start-Sleep.

11 Cmdlet di lettura host

Programma di esempio per mostrare il cmdlet Read-Host.

12 Cmdlet Select-Object

Programma di esempio per mostrare il cmdlet Select-Object.

13 Cmdlet Sort-Object

Programma di esempio per mostrare il cmdlet Sort-Object.

14 Cmdlet di avviso di scrittura

Programma di esempio per mostrare il cmdlet di avviso di scrittura.

15 Cmdlet Write-Host

Programma di esempio per mostrare il cmdlet Write-Host.

16 Invoke-Item Cmdlet

Programma di esempio per mostrare il cmdlet Invoke-Item.

17 Invoke-Expression Cmdlet

Programma di esempio per mostrare il cmdlet Invoke-Expression.

18 Cmdlet comando-misura

Programma di esempio per mostrare il cmdlet comando-misura.

19 Cmdlet Invoke-History

Programma di esempio per mostrare il cmdlet Invoke-History.

20 Cmdlet Add-History

Programma di esempio per mostrare il cmdlet Add-History.

21 Cmdlet Get-History

Programma di esempio per mostrare il cmdlet Get-History.

22 Cmdlet Get-Culture

Programma di esempio per mostrare Get-Culture Cmdlet.

Windows PowerShell è un file command-line shell e scripting languageprogettato appositamente per l'amministrazione del sistema. Il suo analogo in Linux è chiamato Bash Scripting. Basato su .NET Framework, Windows PowerShell aiuta i professionisti IT a controllare e automatizzare l'amministrazione del sistema operativo Windows e delle applicazioni eseguite in ambiente Windows Server.

Comandi di Windows PowerShell, chiamati cmdlets, consentono di gestire i computer dalla riga di comando. I provider di Windows PowerShell consentono di accedere agli archivi dati, come il registro e l'archivio certificati, con la stessa facilità con cui si accede al file system.

Inoltre, Windows PowerShell ha un ricco parser di espressioni e un linguaggio di scripting completamente sviluppato. Quindi in parole semplici puoi completare tutte le attività che fai con la GUI e molto altro ancora. Windows PowerShell Scripting è un linguaggio di scripting completamente sviluppato e dispone di un ricco parser di espressioni /

Caratteristiche

  • Cmdlets - I cmdlet eseguono attività comuni di amministrazione del sistema, ad esempio la gestione del registro, i servizi, i processi, i registri eventi e l'utilizzo di Strumentazione gestione Windows (WMI).

  • Task oriented - Il linguaggio di scripting di PowerShell è basato su attività e fornisce supporti per script esistenti e strumenti da riga di comando.

  • Consistent design- Poiché i cmdlet e gli archivi dati di sistema utilizzano una sintassi comune e hanno convenzioni di denominazione comuni, la condivisione dei dati è semplice. L'output di un cmdlet può essere pipeline a un altro cmdlet senza alcuna manipolazione.

  • Simple to Use - La navigazione semplificata e basata sui comandi consente agli utenti di navigare nel registro e in altri archivi dati simili alla navigazione nel file system.

  • Object based- PowerShell possiede potenti capacità di manipolazione degli oggetti. Gli oggetti possono essere inviati direttamente ad altri strumenti o database.

  • Extensible interface. - PowerShell è personalizzabile poiché i fornitori di software indipendenti e gli sviluppatori aziendali possono creare strumenti e utilità personalizzati utilizzando PowerShell per amministrare il proprio software.

Variabili

Le variabili di PowerShell sono oggetti denominati. Poiché PowerShell funziona con gli oggetti, queste variabili vengono utilizzate per lavorare con gli oggetti.

Creazione variabile

Il nome della variabile deve iniziare con $ e può contenere caratteri alfanumerici e trattini bassi nei loro nomi. È possibile creare una variabile digitando un nome di variabile valido.

Digita il seguente comando nella console ISE di PowerShell. Supponendo che tu sia nella cartella D: \ test.

$location = Get-Location

Qui abbiamo creato una variabile $ location e le abbiamo assegnato l'output del cmdlet Get-Location. Ora contiene la posizione corrente.

Utilizzando variabile

Digita il seguente comando nella console ISE di PowerShell.

$location

Produzione

Puoi vedere il seguente output nella console di PowerShell.

Path                                                                                    
----                                                                                    
D:\test

Ottenere informazioni sulla variabile

Il cmdlet Get-Member può indicare il tipo di variabile in uso. Vedi l'esempio sotto.

$location | Get-Member

Produzione

Puoi vedere il seguente output nella console di PowerShell.

TypeName: System.Management.Automation.PathInfo

Name          MemberType   Definition                                               
----          ----------   ----------                                               
Equals        Method       bool Equals(System.Object obj)                           
GetHashCode   Method       int GetHashCode()                                        
GetType       Method       type GetType()                                           
ToString      Method       string ToString()                                        
Drive         Property     System.Management.Automation.PSDriveInfo Drive {get;}    
Path          Property     System.String Path {get;}                                
Provider      Property     System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath  Property     System.String ProviderPath {get;}

Le variabili speciali di PowerShell memorizzano le informazioni su PowerShell. Queste sono anche chiamate variabili automatiche. Di seguito è riportato l'elenco delle variabili automatiche:

Operatore Descrizione
$$ Rappresenta l'ultimo token nell'ultima riga ricevuta dalla sessione.
$? Rappresenta lo stato di esecuzione dell'ultima operazione. Contiene TRUE se l'ultima operazione è riuscita e FALSE se non è riuscita.
$ ^ Rappresenta il primo token nell'ultima riga ricevuta dalla sessione.
$ _ Uguale a $ PSItem. Contiene l'oggetto corrente nell'oggetto pipeline. È possibile utilizzare questa variabile nei comandi che eseguono un'azione su ogni oggetto o sugli oggetti selezionati in una pipeline.
$ ARGS Rappresenta una matrice di parametri non dichiarati e / o valori di parametro passati a una funzione, uno script o un blocco di script.
$ CONSOLEFILENAME Rappresenta il percorso del file della console (.psc1) utilizzato più di recente nella sessione.
$ ERRORE Rappresenta una matrice di oggetti errore che rappresentano gli errori più recenti.
$ EVENT Rappresenta un oggetto PSEventArgs che rappresenta l'evento che viene elaborato.
$ EVENTARGS Rappresenta un oggetto che rappresenta il primo argomento dell'evento che deriva da EventArgs dell'evento in fase di elaborazione.
$ EVENTSUBSCRIBER Rappresenta un oggetto PSEventSubscriber che rappresenta il sottoscrittore dell'evento in fase di elaborazione.
$ EXECUTIONCONTEXT Rappresenta un oggetto EngineIntrinsics che rappresenta il contesto di esecuzione dell'host di PowerShell.
$ FALSE Rappresenta FALSE. È possibile utilizzare questa variabile per rappresentare FALSE nei comandi e negli script invece di utilizzare la stringa "false".
$ FOREACH Rappresenta l'enumeratore (non i valori risultanti) di un ciclo ForEach. È possibile utilizzare le proprietà e i metodi degli enumeratori sul valore della variabile $ ForEach.
$ HOME Rappresenta il percorso completo della directory home dell'utente.
$ HOST Rappresenta un oggetto che rappresenta l'applicazione host corrente per PowerShell.
$ INPUT Rappresenta un enumeratore che enumera tutto l'input passato a una funzione.
$ LASTEXITCODE Rappresenta il codice di uscita dell'ultimo programma basato su Windows eseguito.
$ PARTITE La variabile $ Matches funziona con gli operatori -match e -notmatch.
$ MYINVOCATION $ MyInvocation viene popolato solo per script, funzioni e blocchi di script. Le proprietà PSScriptRoot e PSCommandPath della variabile automatica $ MyInvocation contengono informazioni sull'invoker o sullo script chiamante, non sullo script corrente.
$ NESTEDPROMPTLEVEL Rappresenta il livello di prompt corrente.
$ NULL $ null è una variabile automatica che contiene un valore NULL o vuoto. È possibile utilizzare questa variabile per rappresentare un valore assente o non definito nei comandi e negli script.
$ PID Rappresenta l'identificatore di processo (PID) del processo che ospita la sessione di PowerShell corrente.
$ PROFILE Rappresenta il percorso completo del profilo di PowerShell per l'utente corrente e l'applicazione host corrente.
$ PSCMDLET Rappresenta un oggetto che rappresenta il cmdlet o la funzione avanzata in esecuzione.
$ PSCOMMANDPATH Rappresenta il percorso completo e il nome file dello script in esecuzione.
$ PSCULTURE Rappresenta il nome delle impostazioni cultura attualmente in uso nel sistema operativo.
$ PSDEBUGCONTEXT Durante il debug, questa variabile contiene informazioni sull'ambiente di debug. In caso contrario, contiene un valore NULL.
$ PSHOME Rappresenta il percorso completo della directory di installazione per PowerShell.
$ PSITEM Uguale a $ _. Contiene l'oggetto corrente nell'oggetto pipeline.
$ PSSCRIPTROOT Rappresenta la directory da cui viene eseguito uno script.
$ PSSENDERINFO Rappresenta le informazioni sull'utente che ha avviato PSSession, inclusa l'identità dell'utente e il fuso orario del computer di origine.
$ PSUICULTURA Rappresenta il nome delle impostazioni cultura dell'interfaccia utente (UI) attualmente in uso nel sistema operativo.
$ PSVERSIONTABLE Rappresenta una tabella hash di sola lettura che visualizza i dettagli sulla versione di PowerShell in esecuzione nella sessione corrente.
$ SENDER Rappresenta l'oggetto che ha generato questo evento.
$ SHELLID Rappresenta l'identificatore della shell corrente.
$ STACKTRACE Rappresenta un'analisi dello stack per l'errore più recente.
$ QUESTO In un blocco di script che definisce una proprietà o un metodo di script, la variabile $ This fa riferimento all'oggetto che viene esteso.
$ TRUE Rappresenta TRUE. È possibile utilizzare questa variabile per rappresentare TRUE nei comandi e negli script.

PowerShell fornisce un ricco set di operatori per manipolare le variabili. Possiamo dividere tutti gli operatori di PowerShell nei seguenti gruppi:

  • Operatori aritmetici
  • Operatori di assegnazione
  • Operatori di confronto
  • Operatori logici
  • Operatori di reindirizzamento
  • Operatori versati e unisciti
  • Operatori di tipo
  • Operatori unari

Gli operatori aritmetici

Gli operatori aritmetici vengono utilizzati nelle espressioni matematiche nello stesso modo in cui vengono utilizzati in algebra. La tabella seguente elenca gli operatori aritmetici:

Supponiamo che la variabile intera A contenga 10 e la variabile B ne contenga 20, quindi -

Mostra esempi

Operatore Descrizione Esempio
+ (Aggiunta) Aggiunge valori su entrambi i lati dell'operatore. A + B darà 30
- (Sottrazione) Sottrae l'operando di destra dall'operando di sinistra. A - B darà -10
* (Moltiplicazione) Moltiplica i valori su entrambi i lati dell'operatore. A * B darà 200
/ (Divisione) Divide l'operando di sinistra per l'operando di destra. B / A darà 2
% (Modulo) Divide l'operando di sinistra per l'operando di destra e restituisce il resto. B% A darà 0

Gli operatori di confronto

Di seguito sono riportati gli operatori di assegnazione supportati dal linguaggio PowerShell:

Supponiamo che la variabile intera A contenga 10 e la variabile B ne contenga 20, quindi -

Mostra esempi

Operatore Descrizione Esempio
eq (uguale a) Confronta due valori in modo che siano uguali o meno. A -eq B darà falso
ne (non uguale a) Confronta due valori in modo che non siano uguali. A -ne B darà vero
gt (maggiore di) Confronta il primo valore in modo che sia maggiore del secondo. B -gt A darà vero
ge (maggiore o uguale a) Confronta il primo valore in modo che sia maggiore o uguale al secondo. B -ge A darà vero
lt (minore di) Confronta il primo valore in modo che sia minore del secondo. B -lt A darà falso
le (minore o uguale a) Confronta il primo valore in modo che sia minore o uguale al secondo. B -le A darà falso

Gli operatori di assegnazione

Di seguito sono riportati gli operatori di assegnazione supportati dal linguaggio PowerShell:

Mostra esempi

Operatore Descrizione Esempio
= Operatore di assegnazione semplice. Assegna i valori dagli operandi del lato destro all'operando del lato sinistro. C = A + B assegnerà il valore di A + B a C
+ = Aggiungi operatore di assegnazione AND. Aggiunge l'operando destro all'operando sinistro e assegna il risultato all'operando sinistro. C + = A è equivalente a C = C + A
- = Sottrai AND operatore di assegnazione. Sottrae l'operando destro dall'operando sinistro e assegna il risultato all'operando sinistro. C - = A è equivalente a C = C - A

Gli operatori logici

La tabella seguente elenca gli operatori logici:

Supponiamo che le variabili booleane A siano vere e la variabile B sia falsa, quindi -

Mostra esempi

Operatore Descrizione Esempio
AND (logico e) Chiamato operatore AND logico. Se entrambi gli operandi sono diversi da zero, la condizione diventa vera. (A -E B) è falso
OR (logico o) Chiamato Operatore OR logico. Se uno dei due operandi è diverso da zero, la condizione diventa vera. (A -OR B) è vero
NOT (logico non) Chiamato operatore NOT logico. Utilizzare per invertire lo stato logico del suo operando. Se una condizione è vera, l'operatore NOT logico la renderà falsa. -NOT (A -E B) è vero

Operatori vari

Di seguito sono riportati vari importanti operatori supportati dal linguaggio PowerShell:

Mostra esempi

Operatore Descrizione Esempio
> (Redirectional Opeator) Operatore di reindirizzamento. Assegna l'output da stampare nel file / dispositivo di output reindirizzato. dir> test.log stamperà l'elenco delle directory nel file test.log

Potrebbe esserci una situazione in cui è necessario eseguire un blocco di codice più volte. In generale, le istruzioni vengono eseguite in sequenza: la prima istruzione in una funzione viene eseguita per prima, seguita dalla seconda e così via.

I linguaggi di programmazione forniscono varie strutture di controllo che consentono percorsi di esecuzione più complicati.

UN loop L'istruzione ci consente di eseguire un'istruzione o un gruppo di istruzioni più volte e la seguente è la forma generale di un'istruzione di ciclo nella maggior parte dei linguaggi di programmazione:

Il linguaggio di programmazione di PowerShell fornisce i seguenti tipi di loop per gestire i requisiti di loop. Fare clic sui seguenti collegamenti per verificarne i dettagli.

Sr.No. Loop e descrizione
1 per loop

Esegue più volte una sequenza di istruzioni e abbrevia il codice che gestisce la variabile del ciclo.

2 forEach loop

Migliorato per loop. Viene utilizzato principalmente per attraversare la raccolta di elementi, inclusi gli array.

3 while loop

Ripete un'istruzione o un gruppo di istruzioni finché una determinata condizione è vera. Verifica la condizione prima di eseguire il corpo del ciclo.

4 fare ... mentre loop

Come un'istruzione while, tranne per il fatto che verifica la condizione alla fine del corpo del ciclo.

Le strutture decisionali hanno una o più condizioni che devono essere valutate o testate dal programma, insieme a una o più istruzioni che devono essere eseguite se la condizione è determinata essere vera e, facoltativamente, altre istruzioni da eseguire se la condizione è determinata essere falso.

Di seguito è riportata la forma generale di una tipica struttura decisionale presente nella maggior parte dei linguaggi di programmazione:

Il linguaggio di scripting di PowerShell fornisce i seguenti tipi di istruzioni per il processo decisionale. Fare clic sui seguenti collegamenti per verificarne i dettagli.

Sr.No. Dichiarazione e descrizione
1 istruzione if

Un if statement consiste in un'espressione booleana seguita da una o più istruzioni.

2 if ... else dichiarazione

Un if statement può essere seguito da un optional else statement, che viene eseguito quando l'espressione booleana è falsa.

3 istruzione if annidata

Puoi usarne uno if o elseif dichiarazione dentro un'altra if o elseif dichiarazione (i).

4 istruzione switch

UN switch consente di verificare l'uguaglianza di una variabile rispetto a un elenco di valori.

PowerShell fornisce una struttura dati, il array, che memorizza una raccolta sequenziale di dimensioni fisse di elementi di qualsiasi tipo. Un array viene utilizzato per memorizzare una raccolta di dati, ma spesso è più utile pensare a un array come una raccolta di variabili o oggetti.

Invece di dichiarare singole variabili, come numero0, numero1, ... e numero99, dichiari una variabile di matrice come numeri e utilizzi numeri [0], numeri [1] e ..., numeri [99] per rappresentare variabili individuali.

Questo tutorial introduce come dichiarare variabili di array, creare array ed elaborare array utilizzando variabili indicizzate.

Dichiarazione delle variabili di matrice

Per utilizzare un array in un programma, è necessario dichiarare una variabile per fare riferimento all'array ed è possibile specificare il tipo di array a cui la variabile può fare riferimento. Ecco la sintassi per dichiarare una variabile di matrice:

Sintassi

$A = 1, 2, 3, 4
or
$A = 1..4

Note- Per impostazione predefinita, il tipo di oggetti dell'array è System.Object. Il metodo GetType () restituisce il tipo di array. Il tipo può essere passato.

Esempio

I seguenti frammenti di codice sono esempi di questa sintassi:

[int32[]]$intA = 1500,2230,3350,4000

$A = 1, 2, 3, 4
$A.getType()

Questo produrrà il seguente risultato:

Produzione

IsPublic    IsSerial    Name                        BaseType                     
--------    --------    ----                        --------                     
True        True        Object[]                    System.Array

Gli elementi dell'array sono accessibili tramite index. Gli indici di matrice sono a base 0; cioè, iniziano da 0 aarrayRefVar.length-1.

Esempio

La seguente istruzione dichiara una variabile array, myList, crea un array di 10 elementi di tipo double e assegna il suo riferimento a myList -

$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123

L'immagine seguente rappresenta la matrice myList. Qui, myList contiene dieci valori doppi e gli indici vanno da 0 a 9.

Elaborazione di array

Quando elaboriamo gli elementi dell'array, spesso usiamo entrambi for loop o foreach perché tutti gli elementi in un array sono dello stesso tipo e la dimensione dell'array è nota.

Esempio

Ecco un esempio completo che mostra come creare, inizializzare ed elaborare array:

$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123

write-host("Print all the array elements")
$myList

write-host("Get the length of array")
$myList.Length

write-host("Get Second element of array")
$myList[1]

write-host("Get partial array")
$subList = $myList[1..3]

write-host("print subList")
$subList

write-host("using for loop")
for ($i = 0; $i -le ($myList.length - 1); $i += 1) {
   $myList[$i]
}

write-host("using forEach Loop")
foreach ($element in $myList) {
   $element
}

write-host("using while Loop")
$i = 0
while($i -lt 4) {
   $myList[$i];
   $i++
}

write-host("Assign values")
$myList[1] = 10
$myList

Questo produrrà il seguente risultato:

Produzione

Print all the array elements
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
Get the length of array
10
Get Second element of array
4.5
Get partial array
print subList
4.5
3.3
13.2
using for loop
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
using forEach Loop
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
using while Loop
5.6
4.5
3.3
13.2
Assign values
5.6
10
3.3
13.2
4
34.33
34
45.45
99.993
11123

Esempi di metodi di array

Di seguito è riportato un esempio completo che mostra le operazioni sugli array utilizzando i suoi metodi

$myList = @(0..4)

write-host("Print array")
$myList

$myList = @(0..4)

write-host("Assign values")
$myList[1]  = 10
$myList

Questo produrrà il seguente risultato:

Produzione

Clear array
Print array
0
1
2
3
4
Assign values
0
10
2
3
4

Hashtable memorizza le coppie chiave / valore in una tabella hash. Quando si utilizza una tabella hash, si specifica un oggetto che viene utilizzato come chiave e il valore che si desidera collegare a quella chiave. Generalmente abbiamo usato String o numeri come chiavi.

Questo tutorial introduce come dichiarare le variabili hashtable, creare hashtable ed elaborare hashtable usando i suoi metodi.

Dichiarazione di variabili hashtable

Per utilizzare una tabella hash in un programma, è necessario dichiarare una variabile per fare riferimento alla tabella hash. Ecco la sintassi per dichiarare una variabile tabella hash:

Sintassi

$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"}
or
$hash = @{}

Note- È possibile creare dizionari ordinati utilizzando una sintassi simile. I dizionari ordinati mantengono l'ordine in cui vengono aggiunte le voci mentre le tabelle hash non lo fanno.

Esempio

I seguenti frammenti di codice sono esempi di questa sintassi:

$hash = [ordered]@{ ID = 1; Shape = "Square"; Color = "Blue"}

Stampa la tabella hash.

$hash

Produzione

Name                           Value    
----                           -----                                                    
ID                             1                                                        
Color                          Blue                                                     
Shape                          Square

È possibile accedere ai valori della tabella hash tramite keys.

> $hash["ID"]
 1

Elaborazione di Hashtable

La notazione punto può essere utilizzata per accedere a chiavi o valori di tabelle hash.

> $hash.keys
ID
Color
Shape

> $hash.values
1
Blue
Square

Esempio

Ecco un esempio completo che mostra come creare, inizializzare ed elaborare una tabella hash:

$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"}

write-host("Print all hashtable keys")
$hash.keys

write-host("Print all hashtable values")
$hash.values

write-host("Get ID")
$hash["ID"]

write-host("Get Shape")
$hash.Number

write-host("print Size")
$hash.Count

write-host("Add key-value")
$hash["Updated"] = "Now"

write-host("Add key-value")
$hash.Add("Created","Now")

write-host("print Size")
$hash.Count

write-host("Remove key-value")
$hash.Remove("Updated")

write-host("print Size")
$hash.Count

write-host("sort by key")
$hash.GetEnumerator() | Sort-Object -Property key

Questo produrrà il seguente risultato:

Produzione

Print all hashtable keys
ID
Color
Shape
Print all hashtable values
1
Blue
Square
Get ID
1
Get Shape
print Size
3
Add key-value
Add key-value
print Size
5
Remove key-value
print Size
4
sort by key

Name                           Value                                                                                                   
----                           -----                                                                                                   
Color                          Blue                                                                                                    
Created                        Now                                                                                                     
ID                             1                                                                                                       
Shape                          
Square

Un'espressione regolare è una sequenza speciale di caratteri che consente di abbinare o trovare altre stringhe o gruppi di stringhe, utilizzando una sintassi specializzata contenuta in un modello. Possono essere utilizzati per cercare, modificare o manipolare testo e dati.

Ecco la tabella che elenca tutta la sintassi dei metacaratteri delle espressioni regolari disponibile in PowerShell:

Sottoespressione Partite
^ Corrisponde all'inizio della riga.
$ Corrisponde alla fine della riga.
. Corrisponde a qualsiasi carattere singolo tranne la nuova riga. Utilizzandom opzione consente di abbinare anche la nuova riga.
[...] Corrisponde a qualsiasi singolo carattere tra parentesi.
[^ ...] Corrisponde a qualsiasi carattere singolo non tra parentesi.
\UN Inizio dell'intera stringa.
\ z Fine dell'intera stringa.
\ Z Fine dell'intera stringa tranne il terminatore di riga finale consentito.
ri* Corrisponde a 0 o più occorrenze dell'espressione precedente.
re + Corrisponde a 1 o più elementi precedenti.
ri? Corrisponde a 0 o 1 occorrenza dell'espressione precedente.
re {n} Corrisponde esattamente al numero n di occorrenze dell'espressione precedente.
re {n,} Corrisponde a n o più occorrenze dell'espressione precedente.
re {n, m} Trova almeno n e al massimo m occorrenze dell'espressione precedente.
a | b Corrisponde a a o b.
(ri) Raggruppa le espressioni regolari e ricorda il testo corrispondente.
(?: re) Raggruppa le espressioni regolari senza ricordare il testo corrispondente.
(?> re) Corrisponde al modello indipendente senza backtracking.
\ w Corrisponde ai caratteri della parola.
\ W Corrisponde ai caratteri non di parole.
\S Corrisponde allo spazio bianco. Equivalente a [\ t \ n \ r \ f].
\S Corrisponde allo spazio non bianco.
\ d Corrisponde alle cifre. Equivalente a [0-9].
\ D Corrisponde alle non cifre.
\UN Corrisponde all'inizio della stringa.
\ Z Corrisponde alla fine della stringa. Se esiste una nuova riga, corrisponde appena prima della nuova riga.
\ z Corrisponde alla fine della stringa.
\ G Corrisponde al punto in cui è terminata l'ultima partita.
\ n Riferimento a ritroso per acquisire il numero di gruppo "n".
\ b Corrisponde ai confini della parola quando si trova al di fuori delle parentesi. Corrisponde al backspace (0x08) quando è all'interno delle parentesi.
\ B Corrisponde ai confini non di parole.
\ n, \ t, ecc. Trova nuove righe, ritorni a capo, tabulazioni, ecc.
\ Q Fuga (virgolette) tutti i caratteri fino a \ E.
\ E Termina la citazione iniziata con \ Q.

Ecco un esempio completo che mostra come utilizzare regex in PowerShell;

Sr.No. Corrispondenza e descrizione
1 Caratteri della corrispondenza

Esempio di caratteri di espressioni regolari supportati.

2 Abbina classi di caratteri

Esempio di classi di caratteri supportate.

3 Abbina quantificatori

Esempio di quantificatori supportati.

L'operatore Backtick (`) è anche chiamato operatore a capo automatico. Consente di scrivere un comando su più righe. Può essere utilizzato anche per la nuova riga (`n) o la tabulazione (` t) nelle frasi. Guarda gli esempi di seguito -

Esempio 1

Get-Service * | Sort-Object ServiceType `
| Format-Table Name, ServiceType, Status -AutoSize

Diventerà

Get-Service * | Sort-Object ServiceType | Format-Table Name, ServiceType, Status -AutoSize

Verifica l'output come

Name                                                   ServiceType  Status
----                                                   -----------  ------
MSSQLServerADHelper100                             Win32OwnProcess Stopped
ntrtscan                                           Win32OwnProcess Running
...

Esempio 2

Uso di nuova riga e scheda.

> Write-host "Title Subtitle"
Title Subtitle

> Write-host "Title `nSubtitle"
Title 
Subtitle

> Write-host "Title `tSubtitle"
Title   Subtitle

Powershell supporta tre tipi di parentesi.

  • Parenthesis brackets. − ()

  • Braces brackets. − {}

  • Square brackets. − []

Parentesi parentesi

Questo tipo di parentesi viene utilizzato per

  • passare argomenti

  • allegare più set di istruzioni

  • risolvere l'ambiguità

  • creare array

Esempio

> $array = @("item1", "item2", "item3")
 
> foreach ($element in $array) { $element }
item1
item2
item3

Parentesi graffe

Questo tipo di parentesi viene utilizzato per

  • allegare dichiarazioni

  • comandi di blocco

Esempio

$x = 10

if($x -le 20){
   write-host("This is if statement")
}

Questo produrrà il seguente risultato:

Produzione

This is if statement.

Parentesi quadre

Questo tipo di parentesi viene utilizzato per

  • accesso all'array

  • accesso alle tabelle hash

  • filtro utilizzando l'espressione regolare

Esempio

> $array = @("item1", "item2", "item3")
 
> for($i = 0; $i -lt $array.length; $i++){ $array[$i] }
item1
item2
item3
 
>Get-Process [r-s]*
 Handles    NPM(K)     PM(K)    WS(K)   VM(M)   CPU(s)     Id    ProcessName
-------    ------     -----     -----   -----   ------     --    -----------  
    320        72     27300     33764    227     3.95    4028    SCNotification 
   2298        77     57792     48712    308             2884    SearchIndexer
   ...

L'alias di PowerShell è un altro nome per il cmdlet o per qualsiasi elemento di comando.

Creazione di alias

Uso New-Aliascmdlet per creare un alias. Nell'esempio seguente, abbiamo creato una guida alias per il cmdlet Get-Help.

New-Alias -Name help -Value Get-Help

Ora invoca l'alias.

help Get-WmiObject -Detailed

Vedrai il seguente output.

NAME
   Get-WmiObject
    
SYNOPSIS
   Gets instances of Windows Management Instrumentation (WMI) classes or information about the available classes.    
    
SYNTAX
   Get-WmiObject [
...

Ottenere Alias

Uso get-alias cmdlet per ottenere tutti gli alias presenti nella sessione corrente di PowerShell.

Get-Alias

Vedrai il seguente output.

CommandType     Name                     Definition
-----------     ----                     ----------  
Alias           %                        ForEach-Object
Alias           ?                        Where-Object
Alias           ac                       Add-Content
Alias           asnp                     Add-PSSnapIn 
...
Stampa