Powershell 显示 PSModulePath 已翻倍

Powershell 显示 PSModulePath 已翻倍

这是我的问题:

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 SQLServer\120\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 SQLServer\120\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\

在我跑步后发生了这种情况,Get-Module xWebAdministration因为我想使用 Azure Desired State Configuration。从那时起,我尝试过

  • 通过控制面板修改 PSModulePath
  • 使用 SETX 进行修改
  • 使用 [Environment]::SetEnvironmentVariable() 进行修改
  • 检查所有六个 powershell 配置文件,看它们是否正在修改它(它们都不存在)
  • 两次重启我的笔记本电脑

这些都没能解决我的问题。当我查看控制面板时,PSModulePath 似乎设置正确。但是,当我打开 powershell 时,它仍然显示上面的输出,并且 DSC 仍然不起作用,因为它尝试获取 xWebAdministration 两次。我该如何修复我的PSModulePath

答案1

我重新让 powershell 工作了,但我必须创建$Home\Documents\Profile.ps1以下内容

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

答案2

如果PSModulePath同时设置为用户变量和系统变量,则两者将合并,就像PATH是一样。奇怪的是,如果您执行 ,则只有用户变量会显示在命令提示符中echo %PSModulePath%,但$env:PSModulePath在 PowerShell 中会显示真正的组合值,如果您cmd从 PowerShell 启动,原始批处理命令也会显示。看来,从您的 Documents 和 Program Files 派生的 Modules 文件夹是在运行时由 PowerShell 添加的,因此它们不需要由环境变量提供。

要对模块路径进行重复数据删除,请删除多余的环境变量或编辑它以不重复任何文件夹。

相关内容