Set-Variable
Imposta il valore di una variabile. Crea la variabile se non ne esiste una con il nome richiesto.
Sintassi
Set-Variable [-Name] <string[]> [[-Value] <Object>] [-Description <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Option {<None> | <ReadOnly> | <Constant> | <Private> | <AllScope>}] [-PassThru] [-Scope <string>] [-Visibility {<Public> | <Private>}] [-Confirm] [-WhatIf] [<CommonParameters>]
Descrizione
Il cmdlet Set-Variable assegna un valore a una variabile specificata oppure modifica il valore corrente. Se la variabile non esiste, viene creata dal cmdlet.
Parametri
-Description <string>
Specifica la descrizione della variabile.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Exclude <string[]>
Omette gli elementi specificati. Il valore di questo parametro qualifica il parametro Path. Immettere un criterio o un elemento del percorso, ad esempio "*.txt". È consentito l'utilizzo di caratteri jolly.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Force
Consente di creare una variabile con lo stesso nome di una variabile di sola lettura esistente o di modificare il valore di una variabile di sola lettura.
Per impostazione predefinita, è possibile sovrascrivere una variabile, a meno che la variabile non disponga di un valore dell'opzione "ReadOnly" o "Constant". Per ulteriori informazioni, vedere il parametro Option.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Include <string[]>
Modifica unicamente gli elementi specificati. Il valore di questo parametro qualifica il parametro Name. Immettere un nome o un modello di nome, ad esempio "c*". È consentito l'utilizzo di caratteri jolly.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Name <string[]>
Specifica il nome della variabile.
Obbligatorio? |
true |
Posizione? |
1 |
Valore predefinito |
|
Accettare input da pipeline? |
true (ByPropertyName) |
Accettare caratteri jolly? |
false |
-Option <ScopedItemOptions>
Modifica il valore della proprietà Options della variabile. I valori validi sono:
-- None: non imposta alcuna opzione. "None" rappresenta il valore predefinito.
-- ReadOnly: non è possibile modificare le proprietà della variabile, a meno che non si utilizzi il parametro Force. È possibile utilizzare Remove-Variable per eliminare la variabile.
-- Constant: la variabile non può essere eliminata e non è possibile modificarne le proprietà. Il valore "Constant" è disponibile solo quando si crea un alias. Non è possibile modificare in "Constant" l'opzione di una variabile esistente.
-- Private: la variabile è disponibile solo nell'ambito specificato dal parametro Scope Viene ereditata da ambiti figlio.
--AllScope: la variabile viene copiata in qualsiasi nuovo ambito creato.
Per visualizzare la proprietà Options delle variabili, digitare "Get-Variable | Format-Table -property name, options -autosize".
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-PassThru
Restituisce un oggetto che rappresenta la nuova variabile. Per impostazione predefinita, il cmdlet non genera alcun output.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Scope <string>
Determina l'ambito della variabile. I valori validi sono "Global", "Local", "Script" oppure un numero relativo all'ambito corrente, ovvero da 0 al numero di ambiti, dove 0 corrisponde all'ambito corrente e 1 al relativo padre. Il valore predefinito è "Local". Per ulteriori informazioni, vedere about_Scopes.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Value <Object>
Specifica il valore della variabile.
Obbligatorio? |
false |
Posizione? |
2 |
Valore predefinito |
|
Accettare input da pipeline? |
true (ByValue, ByPropertyName) |
Accettare caratteri jolly? |
false |
-Visibility <SessionStateEntryVisibility>
Determina se la variabile è visibile all'esterno della sessione in cui è stata creata. Questo parametro viene progettato per l'utilizzo in script e comandi che verranno forniti ad altri utenti.
I valori validi sono:
-- Public: la variabile è visibile. L'impostazione predefinita è "Public".
-- Private: la variabile non è visibile.
Quando una variabile è privata, non viene visualizzata in elenchi di variabili, ad esempio quelli restituiti da Get-Variable o in visualizzazioni dell'unità Variable:. I comandi per leggere o modificare il valore di una variabile privata restituiscono un errore. L'utente può tuttavia eseguire comandi che utilizzano una variabile privata se i comandi sono stati scritti nella sessione in cui è stata definita la variabile.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
Public |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Confirm
Chiede una conferma prima di eseguire il comando.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-WhatIf
Descrive ciò che accadrebbe se si eseguisse il comando senza eseguirlo realmente.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
<CommonParameters>
Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.
Input e output
Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.
Input |
System.Object È possibile reindirizzare un oggetto che rappresenta il valore della variabile a Set-Variable. |
Output |
Nessuno o System.Management.Automation.PSVariable Quando si utilizza il parametro PassThru, Set-Variable genera un oggetto System.Management.Automation.PSVariable che rappresenta la variabile nuova o modificata. Negli altri casi, il cmdlet non genera alcun output. |
Esempio 1
C:\PS>set-variable -name desc -value "A description"
C:\PS>get-variable -name desc
Descrizione
-----------
Questi comandi impostano il valore della variabile "desc" su "A description" e ottengono quindi il valore della variabile.
Esempio 2
C:\PS>set-variable -name processes -value (Get-Process) -option constant -scope global -description "All processes" -passthru | format-list -property *
Descrizione
-----------
Con questo comando verrà creata una variabile globale di sola lettura che include tutti i processi disponibili nel sistema e verranno quindi visualizzate tutte le proprietà della variabile.
Per creare la variabile verrà utilizzato il cmdlet Set-Variable. Verranno quindi utilizzati il parametro PassThru per creare un oggetto che rappresenta la nuova variabile e l'operatore pipeline (|) per passare l'oggetto al cmdlet Format-List. Verrà infine utilizzato il parametro Property di Format-List con il valore all (*) per visualizzare tutte le proprietà della variabile appena creata.
Il valore "(Get-Process)" è racchiuso tra parentesi per indicare che verrà eseguito prima dell'archiviazione nella variabile. In caso contrario, la variabile includerà le parole "Get-Process".
Esempio 3
C:\PS># set-variable -name counter -visibility private
C:\PS> new-variable -name counter -visibility public -value 26
C:\PS> $counter
26
C:\PS> get-variable c*
Name Value
---- -----
Culture en-US
ConsoleFileName
ConfirmPreference High
CommandLineParameters {}
Counter 26
C:\PS> set-variable -name counter -visibility private
C:\PS> get-variable c*
Name Value
---- -----
Culture en-US
ConsoleFileName
ConfirmPreference High
CommandLineParameters {}
C:\PS> $counter
"Cannot access the variable '$counter' because it is a private variable"
C:\PS> .\use-counter.ps1
Commands completed successfully.
Descrizione
-----------
In questo comando viene illustrato come impostare la visibilità di una variabile su "Private". Questa variabile può essere letta e modificata dagli script che dispongono delle autorizzazioni necessarie, ma non è visibile all'utente.
Nell'output di esempio viene illustrata la differenza nel comportamento delle variabili pubbliche e private.