Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Breve descrição
Este artigo descreve a finalidade e o $Env:PSModulePath uso da variável de ambiente.
Descrição longa
A $Env:PSModulePath variável de ambiente contém uma lista de locais de pasta. O PowerShell pesquisa recursivamente cada pasta em busca de arquivos de módulo (.psd1 ou .psm1).
Por padrão, os locais efetivos atribuídos são $Env:PSModulePath :
- Os módulos instalados no escopo CurrentUser são armazenados em
$HOME\Documents\WindowsPowerShell\Modules. - Os módulos instalados no escopo AllUsers são armazenados no
$Env:ProgramFiles\WindowsPowerShell\Modules. - Módulos fornecidos com o Windows PowerShell armazenados no
$PSHOME\Modules, que é$Env:SystemRoot\System32\WindowsPowerShell\1.0\Modules.
Construção do PowerShell PSModulePath
O valor de $Env:PSModulePath é construído sempre que o PowerShell é iniciado.
O valor varia de acordo com a versão do PowerShell e como você o iniciou.
Inicialização do Windows PowerShell
O Windows PowerShell usa a seguinte lógica para construir o PSModulePath at startup:
- Se
PSModulePathnão existir, combine CurrentUser, AllUsers e os caminhos dos$PSHOMEmódulos - Se
PSModulePathexistir:- Se
PSModulePathcontiver$PSHOMEo caminho dos módulos:-
O caminho dos módulos AllUsers é inserido antes do caminho dos
$PSHOMEmódulos
-
O caminho dos módulos AllUsers é inserido antes do caminho dos
- senão:
- Basta usar
PSModulePathcomo definido, uma vez que o usuário deliberadamente removeu o$PSHOMElocal
- Basta usar
- Se
O caminho do módulo CurrentUser será prefixado somente se o escopo $Env:PSModulePath User não existir. Caso contrário, o escopo $Env:PSModulePath Usuário será usado conforme definido.
Comportamento de pesquisa do módulo
O PowerShell pesquisa recursivamente cada pasta no PSModulePath em busca de arquivos de módulo (.psd1 ou .psm1). Este padrão de pesquisa permite que várias versões do mesmo módulo sejam instaladas em pastas diferentes. Por exemplo:
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
Por padrão, o PowerShell carrega o número de versão mais alto de um módulo quando várias versões são encontradas. Para carregar uma versão específica, use Import-Module com o parâmetro FullyQualifiedName . Para obter mais informações, consulte Import-Module.
Modificando o PSModulePath
Para a maioria das situações, você deve instalar módulos nos locais de módulo padrão. No entanto, talvez seja necessário alterar o PSModulePath valor da variável de ambiente.
Por exemplo, para adicionar temporariamente o C:\Program Files\Fabrikam\Modules diretório à sessão atual, digite $Env:PSModulePath :
$Env:PSModulePath = $Env:PSModulePath+";C:\Program Files\Fabrikam\Modules"
Para alterar o valor de em cada sessão, edite a chave do PSModulePath Registro que armazena os PSModulePath valores. Os PSModulePath valores são armazenados no registro como cadeias de caracteres não expandidas . Para evitar salvar permanentemente os PSModulePath valores como cadeias de caracteres expandidas , use o GetValue() método na subchave e edite o valor diretamente.
O exemplo a seguir adiciona o C:\Program Files\Fabrikam\Modules caminho ao valor da variável de ambiente sem expandir as cadeias de PSModulePath caracteres não expandidas.
$key = (Get-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment')
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)
Para adicionar um caminho à configuração do usuário, use o seguinte código:
$key = (Get-Item 'HKCU:\Environment')
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)