Powershell mostra que PSModulePath está duplicado

1

Aqui está o meu problema:

PS C:\windows\system32> $env:PSModulePath.Replace(';',"'n")
C:\Users\sirdank\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\windows\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files (x86)\Microsoft SQLServer0\Tools\PowerShell\Modules\
C:\Program Files(x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager\
C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\
C:\Users\sirdank\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\windows\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files (x86)\Microsoft SQLServer0\Tools\PowerShell\Modules\
C:\Program Files(x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager\
C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\
C:\ProgramFiles (x86)\Microsoft SDKs\Azure\PowerShell\Storage\

Isso aconteceu depois que executei Get-Module xWebAdministration porque desejo usar a Configuração do estado desejado do Azure. Desde então, eu tentei

  • Modificando o PSModulePath por meio do painel de controle
  • Modificando-o usando SETX
  • Modificando-o usando [Environment] :: SetEnvironmentVariable ()
  • Verificando todos os seis perfis do powershell para ver se estão modificando (nenhum deles existe mesmo)
  • Reiniciando meu laptop duas vezes

Nenhuma dessas coisas resolveu meu problema. Quando olho no painel de controle, o PSModulePath parece estar configurado corretamente. No entanto, quando eu abro o powershell, ele ainda exibe a saída acima e o DSC ainda não funciona porque ele tenta obter xWebAdministration duas vezes. Como corrijo meu PSModulePath ?

    
por sirdank 30.11.2016 / 17:26

2 respostas

0

Eu tenho o powershell funcionando novamente, mas eu tive que criar $Home\Documents\Profile.ps1 com o conteúdo

$env:PSModulePath = [string]::join(';', ($env:PSModulePath -Split ';' | % {$_.TrimEnd('\')} | Sort-Object -Unique))
    
por 30.11.2016 / 18:09
0

Se PSModulePath for definido como uma variável do usuário e uma variável do sistema, os dois serão combinados, como PATH is. Estranhamente, somente a variável de usuário aparecerá no prompt de comando se você usar echo %PSModulePath% , mas $env:PSModulePath no PowerShell exibirá o valor real combinado, assim como o comando de lote original se você iniciar cmd do PowerShell. Parece que as pastas de módulos descendentes de seus documentos e de arquivos de programas são adicionadas pelo PowerShell em tempo de execução, portanto, elas não precisam ser fornecidas por variáveis de ambiente.

Para desduplicar os caminhos do módulo, remova a variável de ambiente extra ou edite-a para não repetir nenhuma pasta.

    
por 07.12.2016 / 00:13