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 -
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 -
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:
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 -
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:
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