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>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Description <String>]
   [-Option <ScopedItemOptions>]
   [-Force]
   [-Visibility <SessionStateEntryVisibility>]
   [-PassThru]
   [-Scope <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Descrizione

Il Set-Variable cmdlet assegna un valore a una variabile specificata o modifica il valore corrente. Se la variabile non esiste, il cmdlet la crea.

Esempio

Esempio 1: Impostare una variabile e ottenere il relativo valore

Questi comandi impostano il valore della $desc variabile su A descriptione quindi ottiene il valore della variabile.

Set-Variable -Name "desc" -Value "A description"
Get-Variable -Name "desc"

Name                           Value
----                           -----
desc                           A description

Esempio 2: Impostare una variabile globale di sola lettura

In questo esempio viene creata una variabile globale di sola lettura che contiene tutti i processi nel sistema e quindi vengono visualizzate tutte le proprietà della variabile.

Set-Variable -Name "processes" -Value (Get-Process) -Option constant -Scope global -Description "All processes" -PassThru |
    Format-List -Property *

Il comando usa il Set-Variable cmdlet per creare la variabile. Usa il parametro PassThru per creare un oggetto che rappresenta la nuova variabile e usa l'operatore pipeline (|) per passare l'oggetto al Format-List cmdlet. Usa il parametro Property di Format-List con un valore di tutti (*) per visualizzare tutte le proprietà della variabile appena creata.

Il valore , (Get-Process), è racchiuso tra parentesi per assicurarsi che venga eseguito prima di essere archiviato nella variabile . In caso contrario, la variabile contiene le parole Get-Process.

Esempio 3: Informazioni sulle variabili pubbliche e private

In questo esempio viene illustrato come modificare la visibilità di una variabile in Private. Questa variabile può essere letta e modificata mediante script con le autorizzazioni necessarie, ma non è visibile all'utente.

New-Variable -Name "counter" -Visibility Public -Value 26
$Counter

26

Get-Variable c*

Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}
Counter               26

Set-Variable -Name "counter" -Visibility Private
Get-Variable c*

Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}

$counter

"Cannot access the variable '$counter' because it is a private variable"

.\use-counter.ps1
#Commands completed successfully.

Questo comando mostra come modificare la visibilità di una variabile in Privato. Questa variabile può essere letta e modificata mediante script con le autorizzazioni necessarie, ma non è visibile all'utente.

Parametri

-Confirm

Richiede conferma prima di eseguire il cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

Specifica la descrizione della variabile.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Specifica una matrice di elementi che questo cmdlet esclude dall'operazione. Il valore di questo parametro qualifica il parametro Path . Immettere un elemento o un modello di percorso, ad esempio *.txt. I caratteri jolly sono consentiti.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-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 abbia un valore di opzione pari ReadOnly a o Constant. Per altre informazioni, vedere il parametro Option .

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

Specifica una matrice di elementi inclusi nel cmdlet nell'operazione. Il valore di questo parametro qualifica il parametro Name . Immettere un nome o un modello di nome, ad esempio c*. I caratteri jolly sono consentiti.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Name

Specifica il nome della variabile.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Option

Specifica il valore della proprietà Options della variabile.

I valori validi sono:

  • None: non imposta alcuna opzione. (None è il valore predefinito.
  • ReadOnly: può essere eliminato. Non può essere modificato, ad eccezione dell'utilizzo del parametro Force.
  • Constant: non può essere eliminato o modificato. Constant è valido solo quando si crea una variabile. Non è possibile modificare le opzioni di una variabile esistente in Constant.
  • Private: la variabile è disponibile solo nell'ambito corrente.
  • AllScope: la variabile viene copiata in tutti i nuovi ambiti creati.

Questi valori sono definiti come enumerazione basata su flag. È possibile combinare più valori per impostare più flag usando questo parametro. I valori possono essere passati al parametro Option come matrice di valori o come stringa delimitata da virgole di tali valori. Il cmdlet combina i valori usando un'operazione binary-OR. Il passaggio di valori come matrice è l'opzione più semplice e consente anche di usare il completamento tramite tabulazione sui valori.

Type:ScopedItemOptions
Accepted values:None, ReadOnly, Constant, Private, AllScope, Unspecified
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Restituisce un oggetto che rappresenta la nuova variabile. Per impostazione predefinita, il cmdlet non genera alcun output.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

Specifica l'ambito della variabile. I valori accettabili per questo parametro sono:

  • Global
  • Local
  • Script
  • Private
  • Numero relativo all'ambito corrente (da 0 al numero di ambiti, dove 0 è l'ambito corrente e 1 è il relativo elemento padre).

Local è l'impostazione predefinita.

Per altre informazioni, vedere about_Scopes.

Type:String
Position:Named
Default value:Local
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Value

Specifica il valore della variabile.

Type:Object
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Visibility

Determina se la variabile è visibile all'esterno della sessione in cui è stata creata. Questo parametro è progettato per l'uso negli script e nei comandi che verranno forniti ad altri utenti.

I valori validi sono:

  • Public: la variabile è visibile. (Public è il valore predefinito.
  • Private: la variabile non è visibile.

Quando una variabile è privata, non viene visualizzata negli elenchi di variabili, ad esempio quelle restituite da Get-Variableo nelle visualizzazioni dell'unità Variabile: . I comandi per leggere o modificare il valore di una variabile privata restituiscono un errore. Tuttavia, l'utente può eseguire comandi che usano una variabile privata se i comandi sono stati scritti nella sessione in cui è stata definita la variabile.

Type:SessionStateEntryVisibility
Accepted values:Public, Private
Position:Named
Default value:Public
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

Object

È possibile inviare tramite pipe un oggetto che rappresenta il valore della variabile a questo cmdlet.

Output

None

Per impostazione predefinita, questo cmdlet non restituisce alcun output.

PSVariable

Quando si utilizza il parametro PassThru , questo cmdlet restituisce un oggetto PSVariable che rappresenta la variabile nuova o modificata.

Note

PowerShell include gli alias seguenti per Set-Variable:

  • Tutte le piattaforme:
    • set
    • sv