У меня снова работает PowerShell, но я должен был создать $Home\Documents\Profile.ps1
с содержимым
$env:PSModulePath = [string]::join(';', ($env:PSModulePath -Split ';' | % {$_.TrimEnd('\')} | Sort-Object -Unique))
Вот моя проблема:
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, кажется, установлен правильно. Однако, когда я открываю powershell, он все равно отображает вывод, приведенный выше, и DSC по-прежнему не работает, потому что он пытается дважды получить xWebAdministration. Как мне починить PSModulePath
?
У меня снова работает PowerShell, но я должен был создать $Home\Documents\Profile.ps1
с содержимым
$env:PSModulePath = [string]::join(';', ($env:PSModulePath -Split ';' | % {$_.TrimEnd('\')} | Sort-Object -Unique))
Если PSModulePath
задана как пользовательская переменная, так и системная переменная, они будут объединены, как PATH
есть. Как ни странно, только пользовательская переменная будет отображаться в командной строке, если вы это сделаете echo %PSModulePath%
, но $env:PSModulePath
в PowerShell показывает реальное объединенное значение, как и исходная пакетная команда, если вы запускаете ее cmd
из PowerShell. Похоже, что папки Модули, происходящие из ваших Документов и Программных файлов, добавляются PowerShell во время выполнения, поэтому их не нужно указывать в переменных среды.
Чтобы дедуплицировать пути к модулям, удалите дополнительную переменную среды или измените ее, чтобы не повторять какие-либо папки.