about_Variables

Descrizione breve

Descrive in che modo le variabili archiviano i valori che possono essere usati in PowerShell.

Descrizione lunga

È possibile archiviare tutti i tipi di valori nelle variabili di PowerShell. Ad esempio, archiviare i risultati dei comandi e archiviare gli elementi usati nei comandi e nelle espressioni, ad esempio nomi, percorsi, impostazioni e valori.

Una variabile è un'unità di memoria in cui vengono archiviati i valori. In PowerShell le variabili sono rappresentate da stringhe di testo che iniziano con un segno di dollaro ($), ad esempio $a, $processo $my_var.

I nomi delle variabili non fanno distinzione tra maiuscole e minuscole e possono includere spazi e caratteri speciali. Tuttavia, i nomi delle variabili che includono caratteri speciali e spazi sono difficili da usare e devono essere evitati. Per altre informazioni, vedere Nomi di variabili che includono caratteri speciali.

Esistono diversi tipi di variabili in PowerShell.

  • Variabili create dall'utente: le variabili create dall'utente vengono create e gestite dall'utente. Per impostazione predefinita, le variabili create nella riga di comando di PowerShell esistono solo quando la finestra di PowerShell è aperta. Quando le finestre di PowerShell vengono chiuse, le variabili vengono eliminate. Per salvare una variabile, aggiungerla al profilo di PowerShell. È anche possibile creare variabili negli script con ambito globale, script o locale.

  • Variabili automatiche: le variabili automatiche archiviano lo stato di PowerShell. Queste variabili vengono create da PowerShell e PowerShell ne modifica i valori in base alle esigenze per mantenere la precisione. Gli utenti non possono modificare il valore di queste variabili. Ad esempio, la $PSHOME variabile archivia il percorso della directory di installazione di PowerShell.

    Per altre informazioni, un elenco e una descrizione delle variabili automatiche, vedere about_Automatic_Variables.

  • Variabili di preferenza: le variabili di preferenza archiviano le preferenze utente per PowerShell. Queste variabili vengono create da PowerShell e vengono popolate con valori predefiniti. Gli utenti possono modificare i valori di queste variabili. Ad esempio, la $MaximumHistoryCount variabile determina il numero massimo di voci nella cronologia della sessione.

    Per altre informazioni, un elenco e una descrizione delle variabili di preferenza, vedere about_Preference_Variables.

Uso delle variabili

Per creare una nuova variabile, usare un'istruzione di assegnazione per assegnare un valore alla variabile. Non è necessario dichiarare la variabile prima di usarla. Il valore predefinito di tutte le variabili è $null.

Per ottenere un elenco di tutte le variabili nella sessione di PowerShell, digitare Get-Variable. I nomi delle variabili vengono visualizzati senza il segno di dollaro precedente ($) usato per fare riferimento alle variabili.

Ad esempio:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Le variabili sono utili per archiviare i risultati dei comandi.

Ad esempio:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Per visualizzare il valore di una variabile, digitare il nome della variabile, preceduto da un segno di dollaro ($).

Ad esempio:

$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46

Per modificare il valore di una variabile, assegnare un nuovo valore alla variabile.

Negli esempi seguenti viene visualizzato il valore della $MyVariable variabile, viene modificato il valore della variabile e quindi viene visualizzato il nuovo valore.

$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.

Per eliminare il valore di una variabile, usare il Clear-Variable cmdlet o modificare il valore in $null.

Clear-Variable -Name MyVariable
$MyVariable = $null

Per eliminare la variabile, usare Remove-Variable o Remove-Item.

Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable

È anche possibile assegnare valori a più variabili con un'unica istruzione. Gli esempi seguenti assegnano lo stesso valore a più variabili:

$a = $b = $c = 0

Nell'esempio seguente vengono assegnati più valori a più variabili.

$i,$j,$k = 10, "red", $true    # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true       # $i is 10, $j is [object[]], Length 2

Per informazioni più dettagliate, vedere la sezione Assegnazione di più variabili di about_Assignment_Operators.

Tipi di variabili

È possibile archiviare qualsiasi tipo di oggetto in una variabile, inclusi numeri interi, stringhe, matrici e tabelle hash. Oggetti che rappresentano processi, servizi, registri eventi e computer.

Le variabili di PowerShell vengono tipate in modo libero, il che significa che non sono limitate a un particolare tipo di oggetto. Una singola variabile può anche contenere una raccolta o una matrice di tipi diversi di oggetti contemporaneamente.

Il tipo di dati di una variabile è determinato dai tipi .NET dei valori della variabile. Per visualizzare il tipo di oggetto di una variabile, usare Get-Member.

Ad esempio:

$a = 12                         # System.Int32
$a = "Word"                     # System.String
$a = 12, "Word"                 # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows   # FileInfo and DirectoryInfo types

È possibile utilizzare un attributo di tipo e una notazione cast per assicurarsi che una variabile possa contenere solo tipi di oggetto o oggetti specifici che possono essere convertiti in tale tipo. Se si tenta di assegnare un valore di un altro tipo, PowerShell tenta di convertire il valore nel relativo tipo. Se il tipo non può essere convertito, l'istruzione di assegnazione ha esito negativo.

Per usare la notazione cast, immettere un nome di tipo, racchiuso tra parentesi quadre, prima del nome della variabile (sul lato sinistro dell'istruzione di assegnazione). Nell'esempio seguente viene creata una $number variabile che può contenere solo numeri interi, una $words variabile che può contenere solo stringhe e una $dates variabile che può contenere solo oggetti DateTime .

[int]$number = 8
$number = "12345"  # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string
was not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : MetadataError: (:) [],
    ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2       # The integer is converted to a string.
$words += 10     # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91"  # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10    # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00

Uso di variabili nei comandi e nelle espressioni

Per usare una variabile in un comando o in un'espressione, digitare il nome della variabile, preceduto dal segno dollaro ($).

Se il nome della variabile e il segno di dollaro non sono racchiusi tra virgolette o se sono racchiusi tra virgolette doppie ("), il valore della variabile viene usato nel comando o nell'espressione.

Se il nome della variabile e il segno di dollaro sono racchiusi tra virgolette singole ('), il nome della variabile viene usato nell'espressione.

Per altre informazioni sull'uso delle virgolette in PowerShell, vedere about_Quoting_Rules.

Questo esempio ottiene il valore della $PROFILE variabile, ovvero il percorso del file del profilo utente di PowerShell nella console di PowerShell.

$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

In questo esempio vengono visualizzati due comandi che possono aprire il profilo di PowerShell in notepad.exe. L'esempio con virgolette doppie (") usa il valore della variabile.

notepad $PROFILE

notepad "$PROFILE"

Negli esempi seguenti vengono usati segni tra virgolette singole (') che considerano la variabile come testo letterale.

'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.

Nomi di variabili che includono caratteri speciali

I nomi delle variabili iniziano con un segno di dollaro ($) e possono includere caratteri alfanumerici e caratteri speciali. La lunghezza del nome della variabile è limitata solo dalla memoria disponibile.

La procedura consigliata consiste nel fatto che i nomi delle variabili includono solo caratteri alfanumerici e il carattere di sottolineatura (_). I nomi delle variabili che includono spazi e altri caratteri speciali sono difficili da usare e devono essere evitati.

I nomi delle variabili alfanumerici possono contenere questi caratteri:

  • Caratteri Unicode di queste categorie: Lu, Ll, Lt, Lm, Lo o Nd.
  • Carattere di sottolineatura (_).
  • Carattere punto interrogativo (?).

L'elenco seguente contiene le descrizioni delle categorie Unicode. Per altre informazioni, vedere UnicodeCategory.

  • Lu - MaiuscoloLetter
  • Ll - MinuscoloLetter
  • Lt - TitlecaseLetter
  • Lm - ModifierLetter
  • Lo - OtherLetter
  • Nd - DecimalDigitNumber

Per creare o visualizzare un nome di variabile che include spazi o caratteri speciali, racchiudere il nome della variabile con le parentesi graffe ({}). Le parentesi graffe indirizzano PowerShell a interpretare i caratteri della variabile come valori letterali.

I nomi delle variabili di caratteri speciali possono contenere questi caratteri:

  • Qualsiasi carattere Unicode, con le eccezioni seguenti:
    • Carattere parentesi graffa di chiusura (}) (U+007D).
    • Carattere backtick () (`U+0060). Il backtick viene usato per eseguire l'escape dei caratteri Unicode in modo che vengano considerati come valori letterali.

PowerShell include variabili riservate, $$ad esempio , $^$?, e $_ che contengono caratteri alfanumerici e speciali. Per altre informazioni, vedere about_Automatic_Variables.

Ad esempio, il comando seguente crea la variabile denominata save-items. Le parentesi graffe ({}) sono necessarie perché il nome della variabile include un trattino speciale (-).

${save-items} = "a", "b", "c"
${save-items}
a
b
c

Il comando seguente ottiene gli elementi figlio nella directory rappresentata dalla ProgramFiles(x86) variabile di ambiente.

Get-ChildItem ${env:ProgramFiles(x86)}

Per fare riferimento a un nome di variabile che include parentesi graffe, racchiudere il nome della variabile tra parentesi graffe e usare il carattere backtick per eseguire l'escape delle parentesi graffe. Ad esempio, per creare una variabile denominata this{value}is type:

${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.

Variabili e ambito

Per impostazione predefinita, le variabili sono disponibili solo nell'ambito in cui vengono create.

Ad esempio, una variabile creata in una funzione è disponibile solo all'interno della funzione. Una variabile creata in uno script è disponibile solo all'interno dello script. Se si dot-source lo script, la variabile viene aggiunta all'ambito corrente. Per altre informazioni, vedere about_Scopes.

È possibile usare un modificatore di ambito per modificare l'ambito predefinito della variabile. L'espressione seguente crea una variabile denominata Computers. La variabile ha un ambito globale, anche quando viene creato in uno script o in una funzione.

$Global:Computers = "Server01"

Per qualsiasi script o comando che viene eseguito all'esterno della sessione, è necessario il Using modificatore di ambito per incorporare i valori delle variabili dall'ambito della sessione chiamante, in modo che il codice fuori sessione possa accedervi.

Per altre informazioni, vedere about_Remote_Variables.

Salvataggio di variabili

Le variabili create sono disponibili solo nella sessione in cui vengono create. Si perdono quando si chiude la sessione.

Per creare la variabile in ogni sessione di PowerShell avviata, aggiungere la variabile al profilo di PowerShell.

Ad esempio, per modificare il valore della $VerbosePreference variabile in ogni sessione di PowerShell, aggiungere il comando seguente al profilo di PowerShell.

$VerbosePreference = "Continue"

È possibile aggiungere questo comando al profilo di PowerShell aprendo il $PROFILE file in un editor di testo, ad esempio notepad.exe. Per altre informazioni sui profili di PowerShell, vedere about_Profiles.

L'unità Variable:

Il provider di variabili di PowerShell crea un'unità Variable: che sembra e agisce come un'unità di file system, ma contiene le variabili nella sessione e i relativi valori.

Per passare all'unità Variable: , usare il comando seguente:

Set-Location Variable:

Per elencare gli elementi e le variabili nell'unità Variable: , usare i Get-Item cmdlet o Get-ChildItem .

Get-ChildItem Variable:

Per ottenere il valore di una variabile specifica, usare la notazione del file system per specificare il nome dell'unità e il nome della variabile. Ad esempio, per ottenere la $PSCulture variabile automatica, usare il comando seguente.

Get-Item Variable:\PSCulture
Name                           Value
----                           -----
PSCulture                      en-US

Per visualizzare altre informazioni sull'unità Variable: e sul provider di variabili di PowerShell, digitare:

Get-Help Variable

Sintassi delle variabili con percorsi del provider

È possibile anteporre un percorso del provider con il segno dollaro ($) e accedere al contenuto di qualsiasi provider che implementa l'interfaccia IContentCmdletProvider .

I provider di PowerShell predefiniti seguenti supportano questa notazione:

Cmdlet delle variabili

PowerShell include un set di cmdlet progettati per gestire le variabili.

Per elencare i cmdlet, digitare:

Get-Command -Noun Variable

Per ottenere assistenza per un cmdlet specifico, digitare:

Get-Help <cmdlet-name>
Nome cmdlet Descrizione
Clear-Variable Elimina il valore di una variabile.
Get-Variable Ottiene le variabili nella console corrente.
New-Variable Crea una nuova variabile.
Remove-Variable Elimina una variabile e il relativo valore.
Set-Variable Modifica il valore di una variabile.

Vedi anche