这是我的问题:
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 添加的,因此它们不需要由环境变量提供。
要对模块路径进行重复数据删除,请删除多余的环境变量或编辑它以不重复任何文件夹。