1

Вот моя проблема:

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?

2 ответа2

0

Если PSModulePath задан как переменная пользователя и системная переменная, они будут объединены, как PATH . Как ни странно, только пользовательская переменная будет отображаться в командной строке, если вы выполните echo %PSModulePath% , но $env:PSModulePath в PowerShell показывает реальное объединенное значение, как и исходная пакетная команда, если вы запускаете cmd из PowerShell. Похоже, что папки Модули, происходящие из ваших Документов и Программных файлов, добавляются PowerShell во время выполнения, поэтому их не нужно указывать в переменных среды.

Чтобы дедуплицировать пути к модулям, удалите дополнительную переменную среды или измените ее, чтобы не повторять какие-либо папки.

0

У меня снова работает powershell, но мне пришлось создать $Home\Documents\Profile.ps1 с содержимым

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .