about_Environment_Variables

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Environment_Variables

DESCRIZIONE BREVE

Questo articolo descrive come accedere alle variabili di ambiente in Windows PowerShell®.

DESCRIZIONE LUNGA

Le variabili d'ambiente archiviano le informazioni sull'ambiente del sistema operativo. Tali informazioni includono dettagli quali il percorso del sistema operativo, il numero di processori usati dal sistema operativo e il percorso delle cartelle temporanee.

Le variabili di ambiente archiviano dati usati dal sistema operativo e da altri programmi. Ad esempio, la variabile di ambiente WINDIR contiene il percorso della directory di installazione di Windows. I programmi possono eseguire una query del valore di questa variabile per determinare dove si trovano i file del sistema operativo Windows.

Windows PowerShell consente di visualizzare e modificare le variabili di ambiente Windows, comprese le variabili impostate nel Registro di sistema e quelle di una determinata sessione. Il provider di ambiente per Windows PowerShell semplifica il processo facilitando la visualizzazione e la modifica delle variabili di ambiente.

A differenza di altri tipi di variabili di Windows PowerShell, quelle di ambiente e i relativi valori vengono ereditate dalle sessioni figlio, ad esempio i processi in background locali e le sessioni in cui vengono eseguiti i membri del modulo. In questo modo, le variabili di ambiente si adattano all'archiviazione dei valori necessari nelle sessioni padre e figlio.

PROVIDER DI AMBIENTE DI WINDOWS POWERSHELL

Il provider di ambiente di Windows PowerShell consente di accedere alle variabili di ambiente Windows in Windows PowerShell in un'unità di Windows PowerShell (l'unità Env: ). Tale unità è analoga a quella di un file system. Per accedere all'unità Env: unità, digitare:

  Set-Location Env:

Quindi, per visualizzare il contenuto dell'unità Env: unità, digitare:

  Get-ChildItem

È possibile visualizzare le variabili di ambiente nell'unità Env: da qualsiasi altra unità di Windows PowerShell ed è anche possibile accedere all'unità Env: per visualizzare e modificare le variabili di ambiente.

OGGETTI VARIABILE DI AMBIENTE

In Windows PowerShell, ogni variabile di ambiente è rappresentata da un oggetto, vale a dire un'istanza della classe System.Collections.DictionaryEntry.

In ogni oggetto DictionaryEntry, il nome della variabile di ambiente rappresenta la chiave del dizionario. Il valore della variabile corrisponde al valore del dizionario.

Per visualizzare una variabile di ambiente in Windows PowerShell, ottenere un oggetto che rappresenta la variabile e visualizzare i valori delle proprietà dell'oggetto. Quando si modifica una variabile di ambiente in Windows PowerShell, usare i metodi che sono associati all'oggetto DictionaryEntry.

Per visualizzare le proprietà e i metodi dell'oggetto che rappresenta una variabile di ambiente in Windows PowerShell, usare il cmdlet Get-Member. Ad esempio, per visualizzare i metodi e le proprietà di tutti gli oggetti presenti nell'unità Env: unità, digitare:

  Get-Item -Path Env:* | Get-Member

VISUALIZZAZIONE DELLE VARIABILI DI AMBIENTE

È possibile usare i cmdlet che contengono il nome Item (i cmdlet Item) al fine di visualizzare e modificare i valori delle variabili di ambiente. Dal momento che le variabili di ambiente non dispongono di elementi figlio, l'output di Get-Item e Get-ChildItem è lo stesso.

Quando si fa riferimento a una variabile di ambiente, digitare il nome dell'unità Env: seguito dal nome della variabile. Ad esempio, per visualizzare il valore della variabile di ambiente COMPUTERNAME, digitare:

  Get-Childitem Env:Computername

Per visualizzare i valori delle variabili di ambiente, digitare:

  Get-ChildItem Env:

Per impostazione predefinita Windows PowerShell visualizza le variabili di ambiente nell'ordine in cui vengono recuperate. Per ordinare l'elenco relativo alle variabili di ambiente in base al nome della variabile, inviare l'output di un comando Get-ChildItem al cmdlet Sort-Object. Ad esempio, da qualsiasi unità Windows PowerShell, digitare:

  Get-ChildItem Env: | Sort Name

È anche possibile accedere all'unità Env: usando il cmdlet Set-Location:

  Set-Location Env:

Quando si usa l'unità Env: è possibile omettere il nome dell'unità Env: dal percorso. Ad esempio, per visualizzare tutte le variabili di ambiente, digitare:

  Get-ChildItem

Per visualizzare il valore della variabile COMPUTERNAME all'interno dell'unità Env: unità, digitare:

  Get-ChildItem ComputerName

È anche possibile visualizzare e modificare i valori delle variabili di ambiente senza usare un cmdlet tramite il parser dell'espressione in Windows PowerShell. Per visualizzare il valore di una variabile di ambiente, usare la sintassi seguente:

  $Env:<variable-name>

Ad esempio, per visualizzare il valore della variabile di ambiente WINDIR, digitare il comando seguente al prompt dei comandi di Windows PowerShell:

  $Env:windir

In questa sintassi, il segno del dollaro ($) indica una variabile, mentre il nome dell'unità indica una variabile di ambiente.

MODIFICA DELLE VARIABILI DI AMBIENTE

Per apportare modifiche permanenti a una variabile di ambiente, è possibile usare la sezione Sistema del Pannello di controllo (scheda Avanzate o elemento Impostazioni di sistema avanzate) per archiviare la modifica nel Registro di sistema.

Quando si modificano le variabili di ambiente in Windows PowerShell, la modifica interessa solo la sessione corrente. Questo comportamento è simile a quello del comando Set in ambienti basati su Windows e a quello del comando Setenv in ambienti basati su UNIX.

È anche necessario disporre dell'autorizzazione per modificare i valori delle variabili. Se si tenta di modificare un valore senza le autorizzazioni necessarie, il comando ha esito negativo e in Windows PowerShell viene visualizzato un errore.

È possibile modificare i valori delle variabili senza usare un cmdlet tramite la sintassi seguente:

          $Env:<variable-name> = "<new-value>"

Ad esempio, per aggiungere "; c:\temp" al valore della variabile di ambiente Path, usare la sintassi seguente:

  $Env:path = $env:path + ";c:\temp"

È anche possibile usare i cmdlet di elemento, ad esempio Set-Item, Remove-Item e Copy-Item, per modificare i valori delle variabili di ambiente. Ad esempio, per aggiungere "; c:\temp" al valore della variabile di ambiente Path tramite il cmdlet Set-Item, usare la sintassi seguente:

          Set-Item -Path Env:Path -Value ($Env:Path + ";C:\Temp")

In questo comando, il valore viene racchiuso tra parentesi in modo che venga interpretato come unità.

SALVATAGGIO DELLE MODIFICHE APPORTATE ALLE VARIABILI DI AMBIENTE

Per creare o modificare il valore di una variabile di ambiente in ogni sessione di Windows PowerShell, aggiungere le modifiche apportate al profilo Windows PowerShell.

Ad esempio, per aggiungere la directory C:\Temp alla variabile di ambiente Path in ogni sessione di Windows PowerShell, aggiungere il comando seguente al profilo di Windows PowerShell.

  $Env:Path = $Env:Path + ";C:\Temp"

Per aggiungere il comando a un profilo esistente, ad esempio a CurrentUser,AllHosts, digitare:

  Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:Path = $Env:Path + ";C:\Temp"'

VARIABILI DI AMBIENTE CHE ARCHIVIANO LE PREFERENZE

Le funzionalità di Windows PowerShell possono usare variabili di ambiente per archiviare le preferenze dell'utente. Tali variabili funzionano come variabili di preferenza, ma vengono ereditate dalle sessioni figlio delle sessioni in cui sono state create. Per altre informazioni sulle variabili di preferenza, vedere about_preference_variables.

Tra le variabili di ambiente che archiviano le preferenze sono presenti:

PSEXECUTIONPOLICYPREFERENCE

Archivia i criteri di esecuzione per la sessione corrente. Questa variabile di ambiente esiste solo quando si imposta un criterio di esecuzione per una singola sessione. Tale operazione può essere eseguita in due modi diversi.

-- Usare PowerShell.exe per avviare una sessione dalla riga di comando e usare il relativo parametro ExecutionPolicy per impostare i criteri di esecuzione per la sessione.

-- Usare il cmdlet Set-ExecutionPolicy. Usare il parametro Scope con il valore "Process".

Per altre informazioni, vedere about_Execution_Policies.

PSMODULEPATH

Archivia i percorsi delle directory dei moduli predefinite. Windows PowerShell cerca i moduli nella directory specificata quando non si specifica il percorso completo di un modulo.

Il valore predefinito di $Env:PSModulePath è:

                $home\Documents\WindowsPowerShell\Modules; $pshome\Modules

Windows PowerShell imposta il valore di "$pshome\Modules" nel Registro di sistema. Imposta il valore di "$home\Documents\WindowsPowerShell\Modules" a ogni avvio di Windows PowerShell.

Inoltre, i programmi di installazione tramite cui i moduli vengono installati in altre directory, ad esempio la directory Programmi, possono aggiungere i relativi percorsi al valore di PSModulePath.

Per modificare le directory dei moduli predefinite per la sessione corrente, usare il formato di comando seguente e modificare il valore della variabile di ambiente PSModulePath.

Ad esempio, per aggiungere la directory "C:\Programmi\Fabrikam\Modules" al valore della variabile di ambiente PSModulePath, digitare:

                $Env:PSModulePath = $Env:PSModulePath + ";C:\Program Files\Fabrikam\Modules"

Il punto e virgola (;) nel comando separa il nuovo percorso da quello che lo precede nell'elenco.

Per modificare il valore di PSModulePath in ogni sessione, aggiungere il comando precedente al proprio profilo Windows PowerShell oppure usare il metodo SetEnvironmentVariable della classe Environment.

Il comando seguente usa il metodo GetEnvironmentVariable per ottenere l'impostazione del computer per PSModulePath e il metodo SetEnvironmentVariable per aggiungere il percorso c:\Programmi\Microsoft Files\Fabrikam\Modules al valore.

$path = [System.Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
            [System.Environment]::SetEnvironmentVariable("PSModulePath", $path + `
               ";C:\Program Files\Fabrikam\Modules", "Machine")

Per aggiungere un percorso all'impostazione dell'utente, modificare il valore di destinazione in User.

            $path = [System.Environment]::GetEnvironmentVariable("PSModulePath", "User")
            [System.Environment]::SetEnvironmentVariable("PSModulePath", $path + `
               ";$home\Documents\Fabrikam\Modules", "User")

Per altre informazioni sui metodi della classe System.Environment, vedere la sezione "Metodi di ambiente" in MSDN all'indirizzo https://go.microsoft.com/fwlink/?LinkId=242783.

È possibile aggiungere anche un comando che modifica il valore nel proprio profilo oppure usare la sezione Sistema del Pannello di controllo per modificare il valore della variabile di ambiente PSModulePath nel Registro di sistema.

Per altre informazioni, vedere about_Modules.

VEDERE ANCHE

Ambiente (provider)

about_Modules