Quando lavoriamo con PowerShell, la prima cosa con cui ci confrontiamo sono i comandi (Cmdlet).
La chiamata del comando appare così:
Verb-Noun -Parameter1 ValueType1 -Parameter2 ValueType2[]
Aiuto
La chiamata dell'aiuto in PowerShell avviene tramite il comando Get-Help. È possibile specificare uno dei seguenti parametri: example, detailed, full, online, showWindow.
Get-Help Get-Service -full restituirà una descrizione completa del funzionamento del comando Get-Service.
Get-Help Get-S* mostrerà tutti i comandi e le funzioni disponibili che iniziano con Get-S*.
C'è anche una documentazione dettagliata sul sito ufficiale di Microsoft.
Ecco un esempio di aiuto per il comando Get-Eventlog.

Se i parametri sono racchiusi tra parentesi quadre [], sono facoltativi.
Vale a dire che in questo esempio il nome stesso del registro è obbligatorio, mentre il nome del parametro no. Se il tipo di parametro e il suo nome sono racchiusi insieme tra parentesi, quel parametro è facoltativo.
Osservando il parametro EntryType, si notano i valori racchiusi tra parentesi graffe. Per questo parametro possiamo utilizzare solo valori predefiniti racchiusi tra parentesi graffe.
Le informazioni su se un parametro è obbligatorio possono essere visualizzate nella descrizione sottostante nel campo Required. Nell'esempio sopra, l'attributo After è facoltativo, poiché di fronte a Required c'è false. Ancora, vediamo il campo Position, di fronte al quale è scritto Named. Questo significa che possiamo accedere al parametro solo per nome, ovvero:
Get-EventLog -LogName Application -After 2020.04.26Poiché per il parametro LogName invece di Named è stato specificato il numero 0, ciò significa che possiamo accedere al parametro senza nome, indicando solo la sequenza corretta:
Get-EventLog Application -After 2020.04.26Supponiamo anche un tale ordine:
Get-EventLog -Newest 5 ApplicationAlias
Affinché possiamo utilizzare i comandi familiari dalla console in PowerShell, ci sono gli alias (Alias).
Un esempio di alias per il comando Set-Location è cd.
Cioè, invece di chiamare il comando
Set-Location “D:”possiamo utilizzare
cd “D:”Storia
Per visualizzare la cronologia delle chiamate ai comandi, possiamo utilizzare Get-History.
Eseguire il comando dalla storia Invoke-History 1; Invoke-History 2
Pulire la cronologia Clear-History
Pipeline
Il pipeline in PowerShell è quando il risultato dell'esecuzione della prima funzione viene passato alla seconda. Ecco un esempio di utilizzo del pipeline:
Get-Verb | Measure-ObjectMa per comprendere meglio il pipeline, prendiamo un esempio più semplice. C'è il comando
Get-Verb "get"Se chiamiamo l'aiuto Get-Help Get-Verb -Full, vedremo che il parametro Verb accetta input dal pipeline e tra parentesi è scritto ByValue.

Questo significa che possiamo riscrivere Get-Verb «get» su «get» | Get-Verb.
Cioè il risultato della prima espressione è una stringa e viene passata al parametro Verb del comando Get-Verb tramite input di pipelining per valore.
Inoltre, l'input di pipelining può essere ByPropertyName. In questo caso, passeremo un oggetto che ha una proprietà con un nome simile a Verb.
Variabili
Le variabili non sono tipizzate in modo rigido e vengono definite con il simbolo $ all'inizio.
$example = 4Il simbolo > indica di inserire i dati in
Ad esempio, $example > File.txt
Con questa espressione inseriremo i dati dalla variabile $example in un file.
Similmente al comando Set-Content -Value $example -Path File.txt
Array
Inizializzazione di un array:
$ArrayExample = @(“First”, “Second”)Inizializzazione di un array vuoto:
$ArrayExample = @()Ottenere un valore per indice:
$ArrayExample[0]Ottenere l'intero array:
$ArrayExampleAggiunta di un elemento:
$ArrayExample += “Third”$ArrayExample += @(“Fourth”, “Fifth”)Ordinamento:
$ArrayExample | Sort$ArrayExample | Sort -DescendingMa l'array stesso rimane invariato con tale ordinamento. E se vogliamo che l'array contenga dati ordinati, dobbiamo assegnare i valori ordinati:
$ArrayExample = $ArrayExample | SortIn effetti, non esiste un modo per rimuovere un elemento da un array in PowerShell, ma è possibile farlo in questo modo:
$ArrayExample = $ArrayExample | where { $_ -ne “First” }$ArrayExample = $ArrayExample | where { $_ -ne $ArrayExample[0] }
Rimozione dell'array:
$ArrayExample = $nullCicli
Sintassi dei cicli:
for($i = 0; $i -lt 5; $i++){}
$i = 0
while($i -lt 5){}
$i = 0
do{} while($i -lt 5)
$i = 0
do{} until($i -lt 5)
ForEach($item in $items){}Uscita dal ciclo break.
Salta l'elemento continue.
Dichiarazioni Condizionali
if () {} elseif () {} elseswitch($someIntValue){
1 { “Opzione 1” }
2 { “Opzione 2” }
default { “Non impostato” }
}
Funzione
Definizione di una funzione:
function Example () {
echo &args
}Esecuzione della funzione:
Example “Primo argomento” “Secondo argomento”Definizione degli argomenti in una funzione:
function Example () {
param($first, $second)
}
function Example ($first, $second) {}Esecuzione della funzione:
Example -first “Primo argomento” -second “Secondo argomento”Eccezione
try{
} catch [System.Net.WebException],[System.IO.IOException]{
} catch {
} finally{
}
Fonte: habr.com
