Informazioni su PSModulePath
Descrizione breve
Questo articolo descrive lo scopo e l'utilizzo della $env:PSModulePath
variabile di ambiente.
Descrizione lunga
La $env:PSModulePath
variabile di ambiente contiene un elenco di percorsi di cartelle in cui viene eseguita la ricerca per trovare moduli e risorse. PowerShell cerca in modo ricorsivo ogni cartella per individuare i file del modulo (.psd1
o .psm1
).
Install-Module
ha un parametro Scope che consente di specificare se il modulo è installato per l'utente corrente o per tutti gli utenti. Per altre informazioni, vedere Install-Module.
Per impostazione predefinita, le posizioni effettive assegnate a $env:PSModulePath
sono:
Percorsi a livello di sistema: queste cartelle contengono moduli forniti con PowerShell. Questi moduli vengono archiviati nella
$PSHOME\Modules
cartella . Si tratta anche del percorso in cui sono installati i moduli di gestione di Windows.I moduli installati nell'ambito AllUsers vengono archiviati in
$env:ProgramFiles\WindowsPowerShell\Modules
.Moduli installati dall'utente: si tratta di moduli installati nell'ambito CurrentUser . Il percorso dell'ambito CurrentUser è in genere la
$HOME\Documents\WindowsPowerShell\Modules
cartella . Il percorso specifico dellaDocuments
cartella varia in base alla versione di Windows e quando si usa il reindirizzamento delle cartelle. Inoltre, Microsoft OneDrive può modificare il percorso dellaDocuments
cartella. È possibile verificare il percorso dellaDocuments
cartella usando il comando seguente:[Environment]::GetFolderPath('MyDocuments')
.Moduli specifici dell'applicazione: i programmi di installazione possono installare moduli in altre directory, ad esempio la
Program Files
directory. Il programma di installazione può aggiungere il percorso dell'applicazione al valore di$env:PSModulePath
.
Costruzione di PowerShell PSModulePath
Il valore di $env:PSModulePath
viene costruito ogni volta che viene avviato PowerShell.
Il valore varia in base alla versione di PowerShell e alla modalità di avvio.
Avvio di Windows PowerShell
Windows PowerShell usa la logica seguente per costruire l'oggetto all'avvio PSModulePath
:
- Se
PSModulePath
non esiste, combinare CurrentUser, AllUsers e i percorsi dei$PSHOME
moduli - Se
PSModulePath
esiste:- Se
PSModulePath
contiene$PSHOME
il percorso dei moduli:- Il percorso dei moduli AllUsers viene inserito prima
$PSHOME
del percorso dei moduli
- Il percorso dei moduli AllUsers viene inserito prima
- Altro:
PSModulePath
Usare semplicemente come definito perché l'utente ha rimosso deliberatamente la$PSHOME
posizione
- Se
Il percorso del modulo CurrentUser è preceduto solo se l'ambito $env:PSModulePath
utente non esiste. In caso contrario, l'ambito $env:PSModulePath
utente viene usato come definito.
Comportamento di ricerca del modulo
PowerShell esegue una ricerca ricorsiva in ogni cartella nei file del modulo (.psd1
o .psm1
) di PSModulePath. Questo modello di ricerca consente l'installazione di più versioni dello stesso modulo in cartelle diverse. Ad esempio:
Directory: C:\Program Files\WindowsPowerShell\Modules\PowerShellGet
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 8/14/2020 5:56 PM 1.0.0.1
d---- 9/13/2019 3:53 PM 2.1.2
Per impostazione predefinita, PowerShell carica il numero di versione più alto di un modulo quando vengono trovate più versioni. Per caricare una versione specifica, usare Import-Module
con il parametro FullyQualifiedName . Per altre informazioni, vedere Import-Module.
Modifica di PSModulePath
Per la maggior parte delle situazioni, è consigliabile installare i moduli nelle posizioni predefinite del modulo. Tuttavia, potrebbe essere necessario modificare il valore della PSModulePath
variabile di ambiente.
Ad esempio, per aggiungere temporaneamente la C:\Program Files\Fabrikam\Modules
directory a $env:PSModulePath
per la sessione corrente, digitare:
$Env:PSModulePath = $Env:PSModulePath+";C:\Program Files\Fabrikam\Modules"
Per modificare il valore di PSModulePath
in ogni sessione, modificare la chiave del Registro di sistema che archivia i PSModulePath
valori. I PSModulePath
valori vengono archiviati nel Registro di sistema come stringhe non espanse . Per evitare di salvare in modo permanente i PSModulePath
valori come stringhe espanse , utilizzare il metodo GetValue nella sottochiave e modificare direttamente il valore.
Nell'esempio seguente viene aggiunto il C:\Program Files\Fabrikam\Modules
percorso al valore della variabile di PSModulePath
ambiente senza espandere le stringhe non espanse.
$key = (Get-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager').OpenSubKey('Environment', $true)
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)
Per aggiungere un percorso all'impostazione utente, modificare il provider del Registro di sistema da HKLM:\
a HKCU:\
.
$key = (Get-Item 'HKCU:\').OpenSubKey('Environment', $true)
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per