Come utilizzare le variabili di PowerShell
Oct 4, 2018
Le variabili PowerShell agiscono come contenitori per dati che possono essere creati, modificati e utilizzati in script o sessioni. Supportano diversi tipi, inclusi stringhe, interi, array e tabelle hash, e possono essere definite come locali, globali o basate su script. Gli amministratori possono impostare descrizioni, visibilità e opzioni, elencare o cancellare variabili ed esportarne i contenuti. L'uso corretto delle variabili semplifica l'automazione e l'efficienza degli script.
Introduzione
Una variabile in PowerShell è un contenitore al quale viene assegnato un valore. Pensatele come scatole nominate dove potete inserire informazioni da utilizzare in seguito. Il valore di una variabile può essere accessibile semplicemente facendo riferimento alla variabile, e può essere cambiato in qualsiasi momento riassegnando alla variabile un nuovo valore. Le variabili sono molto utili per tenere traccia dei dati negli script o durante una sessione di PowerShell.
Esempi di variabili PowerShell
Scopriamo alcuni dei modi più utili per utilizzare le variabili in PowerShell.
Crea e imposta variabili in PowerShell
I nomi delle variabili in PowerShell iniziano con il simbolo del dollaro ($), e non sono sensibili al maiuscolo o minuscolo, quindi, per esempio $VAR e $var si riferiscono alla stessa variabile. Un nome di variabile può contenere lettere, numeri e trattini bassi. Anche se possono contenere spazi e altri caratteri speciali, è meglio evitarli.
Una volta scelto un nome per una variabile in PowerShell, puoi crearla e assegnarle un valore con un unico comando. Ad esempio, se vuoi creare una variabile chiamata $Greeting e assegnarle il valore stringa Ciao, Mondo, utilizzeresti questo comando:
$Greeting = "Hello, World"
Dopo questo comando, ogni volta che digiterai $Greeting, PowerShell sostituirà il valore che hai assegnato a quella variabile, come mostrato di seguito.
Le virgolette doppie (“ ”) nell'esempio precedente indicano che il valore è una stringa. Ecco come puoi creare una variabile e assegnarle un valore intero:
$var1 = 75
$var2 = 25
Puoi eseguire operazioni aritmetiche con le variabili numeriche, come mostrato qui:
Puoi anche combinare le stringhe utilizzando l'operatore segno più (+):
$var10 = “Complete”
$var11 = “Visibility
$var12 = $var10 + $var11
Se aggiungi un numero a una stringa, il numero diventa automaticamente una stringa:
$var1 = “Netwrix”
$var2 = 2023
Imposta o verifica il tipo di una variabile
Le variabili in PowerShell possono memorizzare diversi tipi di dati, inclusi stringhe, interi e oggetti più complessi come gli array. Quando assegni un valore a una variabile, PowerShell determina automaticamente il tipo di dato basandosi sul valore. Questo è noto come digitazione dinamica. Come notato sopra, le stringhe richiedono virgolette.
Ecco alcuni esempi:
$var1 = "Hello" # The type of $var1 is String
$var2 = 25 # The type of $var2 is Integer
$var3 = Get-Date # The type of $var3 is DateTime
Per scoprire di che tipo è una variabile, utilizziamo il parametro GetType:
$var5 = “Netwrix”
$var5.GetType () .FullName
I tipi di variabili più comuni includono i seguenti:
- Stringa: Testo (puoi dichiarare una stringa racchiudendo il testo tra virgolette)
- Integer: Un numero intero
- Doppio: Un numero che include un punto decimale
- Boolean: Un valore di verità, $True o $False
- DateTime: Una data e ora
- Array: Una struttura di dati che contiene una collezione di elementi dello stesso tipo o di tipi diversi. Gli elementi sono memorizzati in sequenza e possono essere accessibili tramite un indice. Ecco un esempio di come dichiarare un array:
$myArray = "apple", "orange", "cherry"
- HashTable: Una struttura dati che comprende una collezione non ordinata di coppie chiave-valore. È come un dizionario in cui si utilizza una chiave univoca per memorizzare e recuperare ciascun valore. Questo rende le hashtable eccellenti per le ricerche e gli scenari in cui è necessario cercare facilmente i valori. Per creare una hashtable, si utilizza @{}. All'interno delle parentesi graffe, si specifica ogni coppia come la chiave seguita da un segno di uguale (=) e poi il valore, come illustrato in questo esempio:
$myHashtable = @{
"Fruit1" = "Apple"
"Fruit2" = "Orange"
"Fruit3" = "Cherry"
}
Definire l'ambito di una variabile
L'ambito è la visibilità e l'accessibilità di una variabile. PowerShell ha diversi ambiti:
- Locale — L'ambito attuale
- Globale — L'ambito che è in vigore quando PowerShell viene avviato o quando si crea una nuova sessione o runspace
- Script — L'ambito che viene creato durante l'esecuzione di uno script
Le variabili sono specificate in PowerShell nel modo seguente:
$global:Var1 = "Global Variable"
$script:Var2 = "Script Variable"
$local:Var3 = "Local Variable"
Automatizza i compiti con Netwrix Directory Manager
Semplifica la gestione dei gruppi e automatizza i compiti senza script PowerShell complessi
Variabili pubbliche vs. private
La proprietà di Visibility di una variabile è legata all'ambito; determina se è possibile vedere l'elemento al di fuori dello script in cui è stato creato. La proprietà di Visibility può avere un valore di Public o Private. Le variabili Private possono essere visualizzate e modificate solo nell'ambito in cui sono state create. Le variabili Public sono accessibili da qualsiasi ambito.
Elenca (Ottieni) le Variabili nell'Ambito Corrente
È possibile elencare tutte le variabili correnti in una sessione di PowerShell utilizzando il cmdlet Get-Variable, che recupera tutte le variabili nell'ambito corrente. L'esempio sottostante elenca alcune delle variabili utilizzate negli esempi precedenti.
Stampa una variabile
Puoi esportare una variabile in un file .txt, .csv o HTML.
Per scrivere su un file .txt, utilizza il comando Out-File :
$var5 = “Hello World”
$var5 | Out-File c:scriptsHello_World.txt
Per esportare i dati in un file .csv, utilizza il comando Export-Csv :
$var6 = Get-Process
$var6 | SELECT Name, Path | Export-Csv -Path c:scriptsprocesses.csv
E per scrivere in un file HTML, usa il comando ConvertTo-Html:
$var6 = Get-Process
$var6 | ConvertTo-HTML -Property Name, Path>C:scriptprocesses.html
Per leggere un file che hai esportato, usa il cmdlet Get-Content:
Get-Content c:\scripts\processes.csv
Cancella una variabile
Il cmdlet Clear-Variable viene utilizzato per rimuovere il valore da una variabile ma lascia l'oggetto variabile stesso. Quando una variabile viene cancellata, la variabile esiste ancora, ma il suo valore è $null. Nell'esempio sottostante, viene creata una variabile e poi cancellata, con ogni azione confermata.
Rimuovi una variabile
Il cmdlet Remove-Variable viene utilizzato per eliminare una variabile e il suo valore.
Nell'esempio sottostante, viene creata una variabile chiamata Example e le viene assegnata la stringa “Hello World!”. La variabile viene poi eliminata dal cmdlet Remove-Variable. Successivamente lo script verifica la variabile e restituisce un errore perché non esiste più.
Si noti che il cmdlet Remove-Variable rimuove solo la variabile nell'ambito corrente. Se c'è una variabile con lo stesso nome in un ambito superiore, quella variabile non sarà influenzata. Allo stesso modo, il cmdlet Remove-Variable non influisce su eventuali ambiti figli che potrebbero contenere una variabile con lo stesso nome.
La differenza tra i comandi Clear-Variable e Remove-Variable è che pulire la variabile cancella solo il valore della variabile, mentre rimuoverla cancella la variabile stessa.
Parametri
I cmdlet discussi sopra accettano vari parametri. Esaminiamo i parametri più utili e come funzionano.
Descrizione
PowerShell variables have a Description property that you can set using the Set-Variable cmdlet with the Description parameter:
Set-Variable -Name "myVariable" -Description "This is my sample variable"
Escludi
Per escludere alcune variabili quando si utilizza il cmdlet Get-Variable, utilizzare il parametro Exclude e specificare i nomi delle variabili da escludere. Nell'esempio sottostante, creiamo 4 variabili. Abbiamo poi utilizzato il comando Get-Variable -Exclude per escluderne due.
$Var1 = "Test1"
$Var2 = "Test2"
$Var3 = "Test3"
$OtherVar = "Other"
Get-Variable -Exclude Var1, OtherVar
(Per includere solo variabili specifiche, utilizzare il parametro Name come descritto di seguito.)
Forza
Puoi utilizzare il parametro Force con alcuni comandi, come Set-Variable e Remove-Variable, per sovrascrivere eventuali restrizioni che potrebbero impedire il completamento del comando.
Ad esempio, normalmente qualsiasi tentativo di cambiare il valore di una variabile di sola lettura risulterà in un errore, come mostrato di seguito:
Tuttavia, puoi sovrascrivere questo comportamento con il parametro Force:
Nome
Puoi utilizzare il parametro Name per fare riferimento a una variabile per nome senza il segno del dollaro. In particolare, puoi usarlo per ottenere solo le variabili i cui nomi corrispondono a un certo schema. Ad esempio, utilizzando il cmdlet sottostante, puoi recuperare solo le variabili i cui nomi iniziano con “Net”:
Get-Variable -Name "NET*"
L'asterisco (*) è un carattere jolly che rappresenta un numero qualsiasi di caratteri aggiuntivi.
Opzione
È possibile specificare il parametro Option con il cmdlet Set-Variable. I valori disponibili per questo parametro includono:
- Nessuno (predefinito): La variabile si comporta come una variabile normale.
- ReadOnly: La variabile non può essere modificata o eliminata.
- Costante: La variabile non può essere modificata o eliminata, nemmeno con il parametro Force.
- Privato: La variabile è disponibile solo nell'ambito corrente.
- AllScope: La variabile viene copiata in tutti i nuovi ambiti che vengono creati.
Un esempio dell'opzione ReadOnly è mostrato qui:
PassThru
Di default, la maggior parte dei cmdlet che eseguono un'azione (come Set-Variable, New-Item e Remove-Item) non producono alcun output; completano semplicemente l'azione in silenzio. Tuttavia, se utilizzi il parametro PassThru, il cmdlet produrrà un oggetto che rappresenta l'elemento che hai manipolato con il cmdlet.
Ecco un esempio di utilizzo di PassThru con Set-Variable:
WhatIf
Puoi utilizzare il parametro WhatIf nei cmdlet che apportano modifiche, come Set-Variable, Remove-Variable o Clear-Variable, per vedere cosa succederebbe se eseguissi il cmdlet, senza apportare alcuna modifica effettiva. Questo è utile se non sei certo di cosa farebbe un cmdlet. Di seguito è mostrato un esempio:
Conclusione
Con una solida comprensione di come le variabili PowerShell possono essere create e manipolate, puoi creare script PowerShell per assisterti nell'automazione dei compiti, nell'amministrazione del sistema, nello sviluppo del software e altro ancora.
Come Netwrix può aiutare
Hai bisogno di proteggere il tuo Active Directory e l'ambiente Entra ID (Azure AD) in modo più efficiente ed efficace? Prendi in considerazione Netwrix Directory Manager. Le sue capacità automatizzate di gestione di gruppi e utenti riducono il rischio di violazioni dei dati eliminando al contempo compiti amministrativi manuali che fanno perdere tempo.
Netwrix Directory Manager ti consente di:
- Automatizzare il provisioning e il deprovisioning degli utenti dal sistema di informazioni sulle risorse umane (HRIS) ad Active Directory, Entra ID e applicazioni abilitate SCIM, consentendo così ai nuovi dipendenti di essere rapidamente produttivi e riducendo il rischio che gli avversari prendano il controllo di identità obsolete.
- Aggiornate automaticamente i gruppi di directory in base a cambiamenti come la promozione di un dipendente o il passaggio a un altro ruolo, come registrato nel vostro HRIS. Questa automazione mantiene i diritti di accesso aggiornati quasi in tempo reale come richiesto per la sicurezza e la conformità, risparmiando tempo al vostro team IT.
- Delega la gestione di gruppi e utenti alle persone che sanno chi dovrebbe avere accesso a cosa. Flussi di lavoro semplici consentono ai responsabili delle linee di business di rivedere i loro gruppi e approvare o negare le richieste di accesso degli utenti, riducendo il rischio di avere gruppi e utenti con troppi privilegi nella tua directory.
- Mantieni la directory pulita e più facile da gestire con la creazione, la scadenza e l'eliminazione automatica degli utenti.
- Mantieni e dimostra la conformità con le normative e gli standard grazie a un'intuizione approfondita, un'automazione efficace e una chiara rendicontazione sui gruppi e i membri.
Tutorial di scripting Windows PowerShell per principianti
Scopri di piùCondividi su
Scopri di più
Informazioni sull'autore
Jonathan Blackwell
Responsabile dello Sviluppo Software
Dal 2012, Jonathan Blackwell, ingegnere e innovatore, ha fornito una leadership ingegneristica che ha posizionato Netwrix GroupID all'avanguardia nella gestione di gruppi e utenti per ambienti Active Directory e Azure AD. La sua esperienza nello sviluppo, nel marketing e nelle vendite permette a Jonathan di comprendere appieno il mercato dell'Identity Management e il modo di pensare degli acquirenti.
Scopri di più su questo argomento
Powershell Elimina il file se esiste
PowerShell Write to File: "Out-File" e Tecniche di Output del File
Come creare nuovi utenti di Active Directory con PowerShell
Come eseguire uno script PowerShell
Cos'è PowerShell? Una guida completa alle sue funzionalità e utilizzi