Update-help не может обновить два модуля
На моем компьютере (Win10 Enterprise x64, 1709) работает Update-Help
возвращает две ошибки:
update-help: Не удалось обновить справку для модуля (ов) 'AutoSequencer, HostNetworkingService, WindowsUpdateProvider' с культурой (ами) пользовательского интерфейса {en-US}: невозможно получить XML-файл HelpInfo для культуры пользовательского интерфейса en-US. Убедитесь, что свойство HelpInfoUri в манифесте модуля является действительным, или проверьте подключение к сети, а затем повторите команду.
В строке:1 символ:1 + update-help + ~~~~~~~~~~~ + CategoryInfo: ResourceUnavailable: (:) [Update-Help], Exception + FullyQualifiedErrorId: UnableToRetrieveHelpInfoXml, Microsoft.PowerShell.Commands.UpdateHelpCommand
update-help: не удалось обновить справку для модуля (ей) "PrintManagement" с использованием языка (ов) пользовательского интерфейса {en-US}: невозможно подключиться к содержимому справки. Сервер, на котором хранится содержимое справки, может быть недоступен. Убедитесь, что сервер доступен, или подождите, пока сервер снова не подключится, и повторите команду.
В строке:1 символ:1 + update-help + ~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [Update-Help], Exception + FullyQualifiedErrorId: UnableToConnect,Microsoft.PowerShell.Commands.UpdateHelpCommand
Это проблема, потому что я пишу сценарии обновлений Windows в первый раз, и наличие справочных файлов для WindowsUpdateProvider является своего рода важным. Даже если бы я знал, как найти и исправить свойство "HelpInfoUri", я бы не знал, как его установить - поиск в Google "Справка WindowsUpdateProvider" в основном возвращает людей, спрашивающих об этой проблеме на разных языках, без решений, которые я могу увидеть. Это также означает, что я не могу обойти проблему с помощью онлайн-справки. (Get-Help WindowsUpdateProvider -online возвращает похожую ошибку.)
Я знаю о модуле "PSWindowsUpdate", но из-за наших процессов было бы предпочтительнее использовать модуль, который поставляется с Windows 10.
4 ответа
Это не необычно. Это случалось со мной много раз. С момента первого выпуска PowerShell/Monad.
Так что не переживайте из-за этого, потому что обычно вы не можете это исправить (часто это может сделать только автор), и используйте версию онлайн-справки для модуля, у которого есть проблемы, если таковые имеются, конечно.
Не все модули имеют обновляемую справку, или есть проблемы со связанным манифестом, файлами ссылок справки.
Итак, как отмечает PimpJuiceIT, просто используйте эту команду, чтобы игнорировать ошибку.
Я наткнулся на Не удалось обновить справку для модуля (ов)~ сообщение TechNet после попытки этого и получения того же результата, что и вы.
После запуска с приведенным ниже синтаксисом, когда я прочитал этот пост, прежде чем поднял приглашение PowerShell, это дало мне необходимую информацию о том, что это за проблема и как ее решить.
Решение для двух частей
- Запустите PowerShell с повышенными правами администратора
Запустите этот синтаксис команды PowerShell:
Update-Help -Force -Ea 0 -Ev what $what.Exception
Ошибка (используя -ErrorAction
[ -Ea
] а также -ErrorVariable
[ -Ev
])
Не удалось обновить справку для модуля (ей): '
<List of Modules>
~ 'Доступ запрещен. Команде не удалось обновить разделы справки для основных модулей Windows PowerShell или для любых модулей в каталоге $pshome\Modules. Чтобы обновить эти разделы справки, запустите Windows PowerShell с помощью команды "Запуск от имени администратора" и попробуйте снова запустить Update-Help. Не удалось обновить справку для модуля (ей)~
Дополнительные ресурсы
- Обновление-Help
ErrorAction
-ErrorAction
Общий параметр позволяет указать, какое действие необходимо выполнить в случае сбоя команды. Доступны следующие варианты: Стоп, Продолжить, SilentlyContinue, Игнорировать или Запросить. Если вы разрабатываете рабочий процесс Windows PowerShell, вы также можете использовать значение Suspend. Тем не менее, расширенные функции не могут быть приостановлены.При указании параметра ErrorAction во время вызова команды указанное поведение переопределит
$ErrorActionPreference
переменная в Windows PowerShell. Эта переменная является частью нескольких переменных, известных как "переменные предпочтения". По умолчанию Windows PowerShell использует предпочтение действия ошибки " Продолжить", что означает, что ошибки будут записаны на хост, но сценарий продолжит выполняться.
ErrorVariable
Обычно, если вы запускаете команду Windows PowerShell и возникает ошибка, запись об ошибке будет добавлена к "автоматической переменной" с именем
$error
, Когда вы используете-ErrorVariable
Параметр при вызове команды, ошибка присваивается имя переменной, которую вы указываете. Важно отметить, что даже когда вы используете-ErrorVariable
параметр,$error
переменная все еще обновляется.
Цитирую dsolodow, выпуск № 139 из документации по PowerShell на GitHub:
Нет, пока нет исправления для отсутствующей помощи. Тем не менее, большинство командлетов в этом модуле не имеют никаких реальных опций и просто возвращают true/false или дату и время.
Лично мне нравится обходной путь ниже, который продолжает работать и не останавливается на ошибке, но дает вам ошибки в конце. Это было предложено Alo Press в этой дискуссии Technet.
Update-Help -Force -Ea 0 -Ev what
$what.Exception
Лучшее использование:
$modules = Get-Module -ListAvailable
foreach ($module in $modules) {
Write-Output $module
Update-Help -Module $module -ErrorAction Continue
}