Как обновить переменные среды сеанса Windows PowerShell из реестра. Как обновить powershell


[powershell-v3.0] Как обновить версию PowerShell от 2.0 до 3.0 [upgrade] [powershell-v2.0]

Загрузите и установите с http://www.microsoft.com/en-us/download/details.aspx?id=34595 . Вам нужен Windows 7 SP1 .

Следует иметь в виду, что PowerShell 3 в Windows 7 не имеет всех командлетов в качестве PowerShell 3 в Windows 8. Поэтому вы можете столкнуться с командлетами, которых нет в вашей системе.

Просто запустите это в консоли.

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin cinst powershell

Он устанавливает последнюю версию, используя репозиторий Chocolatey .

Первоначально я использовал команду cinst powershell 3.0.20121027 , но похоже, что позже она перестала работать. Поскольку этот вопрос связан с PowerShell 3.0, это был правильный путь. На данный момент (26 июня 2014 года) cinst powershell ссылается на версию 3.0 PowerShell, и это может измениться в будущем.

См. Страницу пакета Chocolatey PowerShell для получения подробной информации о том, какая версия будет установлена.

На сегодняшний день Windows PowerShell 5.0 является последней версией. Он может быть установлен как часть Windows Management Framework 5.0. Он был выпущен в феврале 2016 года.

Цитата из официальной страницы загрузки Microsoft microsoft.com/en-us/download/details.aspx?id=50395 -

Некоторые из новых и обновленных функций в этом выпуске включают в себя:

  1. Просто достаточно администрации (JEA)
  2. Создание пользовательских типов с использованием классов PowerShell
  3. Усовершенствования в отладке сценариев PowerShell
  4. Улучшения в конфигурации желаемого состояния (DSC)
  5. Аудит использования PowerShell с использованием транскрипции и регистрации
  6. Обнаружение, установка и инвентаризация программного обеспечения с помощью управления пакетами
  7. Обнаружение, установка и инвентаризация модулей PowerShell с помощью PowerShellGet
  8. Обнаружение, установка и управление скриптом PowerShell Script с помощью PowerShellGet
  9. Новые и обновленные командлеты на основе отзывов сообщества
  10. Информационный поток
  11. Генерировать командлеты PowerShell на основе конечной точки OData
  12. Управление сетевым коммутатором с помощью PowerShell
  13. Ведение журнала инвентаризации программного обеспечения (SIL)

code-examples.net

Как выполнить обновление справки PowerShell (Update-Help) при использовании прокси [Вики IT-KB]

powershell:how-to-set-current-user-credentials-for-powershell-update-help-over-proxy

Как выполнить обновление справки PowerShell (Update-Help) при использовании прокси

При попытке выполнить команду обновления справочной информации Update-Help для оболочки PowerShell в случае, если у текущего пользователя нет прямого выхода в Интернет, можно получить ошибку типа:

Update-Help : Не удалось обновить справку для одного или нескольких модулей «ActiveDirectory, AppBackgroundTask, AppLocker, … WindowsUpdate» с культурами пользовательского интерфейса {ru-RU}: Не удалось подключиться к содержимому справки. Возможно, сервер, на котором оно хранится, недоступен. Убедитесь, что он доступен, или дождитесь его подключения к сети и выполните команду еще раз.

Как я понял, для обновления справки PowerShell используется класс System.Net.WebClient, который в свою очередь не пытается использовать учётные данные текущего пользователя для того, чтобы предоставить их прокси серверу, который в нашем случае требует обязательной аутентификации. Чтобы указанному классу явно передать учётные данные, выполним пару команд:

$wc = New-Object System.Net.WebClient $wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

После этого можно попробовать снова запустить команду обновления справки:

Update-Help

При этом стоит помнить также про то, что обновление справки нужно выполнять из под учётной записи с административными привилегиями, в противном случае необходимые для обновления файлы будут загружены, но не смогут установиться в систему и мы снова получим ошибку.

Автор первичной редакции:Алексей Максимов Время публикации: 28.04.2016 15:17

powershell/how-to-set-current-user-credentials-for-powershell-update-help-over-proxy.txt · Последние изменения: 28.04.2016 15:19 — Алексей Максимов

wiki.it-kb.ru

powershell - Как обновить переменные среды сеанса Windows PowerShell из реестра

К сожалению, в других ответах отсутствуют некоторые важные детали. PSModulePath имеет специальную обработку в PowerShell, которую необходимо учитывать при обновлении переменных среды. Кроме того, переменные могут быть добавлены, изменены или удалены. И вам нужно учитывать переменные среды пути.

Чтобы усугубить ситуацию, в зависимости от того, какой продукт/хост вы используете, когда вы это делаете, у этого продукта может быть какая-то специальная обработка переменных среды, которая должна быть рассмотрена, и не надеяться, что переменные среды Path (те, которые содержат несколько значений, с разделителями с запятой) на самом деле содержат "путь" как часть их имени, вы можете пропустить что-то (если, конечно, это не так, как Windows обрабатывает эти переменные среды внутри, что могло бы быть, я не копал это далеко вниз по кроличьей дыре).

Вот script, с которым я столкнулся, это примерно так же близко, как я думаю, вы сможете правильно обновить переменные среды в текущем сеансе PowerShell, не перезапустив его:

# Get all environment variables for the current Process, as well as System and User environment variable values $processValues = [Environment]::GetEnvironmentVariables('Process') $machineValues = [Environment]::GetEnvironmentVariables('Machine') $userValues = [Environment]::GetEnvironmentVariables('User') # Identify the entire list of environment variable names first $envVarNames = ($machineValues.Keys + $userValues.Keys + 'PSModulePath') | Sort-Object | Select-Object -Unique # Now process all of those keys, updating what exists and adding what is new foreach ($envVarName in $envVarNames) { if ($envVarName -eq 'PSModulePath') { $pieces = @() if ($PSVersionTable.PSVersion -ge [System.Version]'4.0') { $pieces += Join-Path -Path ${env:ProgramFiles} -ChildPath 'WindowsPowerShell\Modules' } if (-not $userValues.ContainsKey($envVarName)) { $pieces += Join-Path -Path ([Environment]::GetFolderPath('Documents')) -ChildPath 'WindowsPowerShell\Modules' } else { $pieces += $userValues[$envVarName] -split ';' } if ($machineValues.ContainsKey($envVarName)) { $pieces += $machineValues[$envVarName] -split ';' } [Environment]::SetEnvironmentVariable($envVarName,($pieces -join ';'),'Process') } elseif ($envVarName -match 'path') { $pieces = @() if ($userValues.ContainsKey($envVarName)) { $pieces += $userValues[$envVarName] -split ';' } if ($machineValues.ContainsKey($envVarName)) { $pieces += $machineValues[$envVarName] -split ';' } [Environment]::SetEnvironmentVariable($envVarName,($pieces -join ';'),'Process') } elseif ($userValues.ContainsKey($envVarName)) { [Environment]::SetEnvironmentVariable($envVarName,$userValue[$envVarName],'Process') } elseif ($machineValues.ContainsKey($envVarName)) { [Environment]::SetEnvironmentVariable($envVarName,$machineValue[$envVarName],'Process') } } # Lastly remove the environment variables that no longer exist foreach ($envVarName in $processValues.Keys | Where-Object {$envVarNames -notcontains $_}) { Remove-Item -LiteralPath "env:${envVarName}" }

Обратите внимание, что это в основном непроверено, но принцип звучит, и он основан на работе, которую я делал в прошлом в этой области.

qaru.site

Обновление документации PowerShell | Microsoft Docs

  • 14.09.2017
  • Время чтения: 2 мин
  • Соавторы

В этой статье

Публикацию подготовил Джефф Сэндквист (Jeff Sandquist), директор подразделения Cloud and Enterprise.

Сегодня мы запустили новую программу по обновлению документации PowerShell на docs.microsoft.com. Хотя большая часть этих функций уже была реализована для документов PowerShell, хранящихся на docs.microsoft.com, мы надеемся, что после переноса всей документации на единую платформу, пользователи PowerShell смогут по достоинству оценить преимущества обновленного интерфейса и расширенных возможностей сайта.

Единый справочник по модулям PowerShell

Назначение справочной документации по модулям PowerShell — добиться единого, согласованного вида для всех модулей PowerShell, поставляемых корпорацией Майкрософт. Сюда входит выполнение следующих задач.

  • Согласованные шаблоны URL-адресов. Если вы знаете название модуля или командлета, вы знаете URL-адрес. Шаблон URL-адреса для документации: docs.microsoft.com/powershell/module/{название_модуля}/{название_командлета}/. Например, для командлета Get-AzureRMStorageAccount в модуле AzureRM.Storage нужно использовать следующий URL-адрес: https://docs.microsoft.com/powershell/module/azurerm.storage/get-azurermstorageaccount.
  • Согласованный пользовательский интерфейс и единообразное форматирование для модулей, командлетов и примеров. См. ниже
  • Пользователи смогут отправлять свои предложения по внесению правок в справочник по PowerShell (ожидается в ближайшее время)!
  • Поддержка управления версиями для предыдущих версий PowerShell. Например, чтобы применить фильтр по Azure PowerShell версии 2.2.0, наше средство выбора версий просто добавляет к URL-адресу текст view= "azurermps-2.2.0".

Помимо перечисленного, мы планируем повысить удобство работы и перенести все существующие документы PowerShell, включая PowerShell Core, на единую платформу по размещению документации Майкрософт. Ждите новых анонсов.

Управление версиями PowerShell

Хотя мы говорили об управлении версиями для конкретного модуля, не стоит забывать, что некоторые модули поставляются как группа модулей, каждый из которых имеет собственную схему версий. Например, клиенты скачивают Azure PowerShell через PowerShell-Get (рекомендуется) или с помощью отдельного установщика. Сложность заключается в том, что наша документация не была сгруппирована по этим выпускам, поэтому клиентам приходилось самим определять, какие версии документов нужны для их установки.

Раньше, если вы установили Azure PowerShell 3.7, вам нужно было узнавать версию каждого поставляемого с ним отдельного модуля (например, AzureRM 3.7 поставляется с AzureRM.Automation 2.7 и AzureRM.CognitiveServices v0.5.0).

Теперь вам достаточно выбрать только одну версию, установленную на вашем компьютере, а мы отфильтруем и покажем модули, которые ей соответствуют. [снимок экрана]

Группировка по службам

Мы реализовали группировку по службам Azure. Обратите внимание, что в оглавлении слева командлеты Azure PowerShell теперь сгруппированы по службам, к которым они принадлежат. Опираясь на отзывы пользователей, мы поняли, что, хотя некоторые модули имеют однозначное соответствие между именем модуля и именем службы (например, веб-приложения Azure используют AzureRM.Websites), отдельные модули, например AzureRM.Compute, содержат несколько служб Azure (службу контейнера, виртуальные машины или масштабируемые наборы виртуальных машин).

Добавление общих сведений и примеров

Теперь в верхней части страниц наших справочников мы размещаем разделы "Общий обзор", "Этапы установки", "Приступая к работе" и "Примеры", чтобы вы могли быстро начать работу. [снимок экрана]

Простая фильтрация при вводе символов в оглавлении слева

Вы можете легко фильтровать результаты поиска, вводя символы в оглавлении слева. Например, если ввести "XX", то вы найдете все командлеты и службы, в именах которых есть эти символы. [анимированное GIF-изображение]

Усовершенствования на странице командлетов

Улучшенная раскраска и форматирование

Командлеты PowerShell теперь красиво выделены цветом и отформатированы для упрощения восприятия.

Раньше [снимок экрана]

Теперь [снимок экрана]

Улучшения параметров

Хотя раньше параметры были сгруппированы на обязательные и необязательные, список параметров выглядел неупорядоченным. Теперь мы добавили заголовки разделов для группировки обязательных и необязательных параметров. Мы также улучшили цветовую схему и стиль параметров, чтобы их тип был очевидным. [снимок экрана]

Умное копирование и вставка

Некоторые командлеты PowerShell начинаются с текста "PS C:>", как показано ниже. Теперь при нажатии кнопки "Копировать" в примере текст "PS C:>" не копируется.[снимок экрана]

Хотя наша работа еще не закончена, мы будем рады получить ваши отзывы и предложения через Docs UserVoice.

docs.microsoft.com

Pablo Burgos: Как обновить переменные среды сеанса Windows PowerShell из реестра - Найдено 6 ответов

К сожалению, в других ответах отсутствуют некоторые важные детали. PSModulePath имеет специальную обработку в PowerShell, которую необходимо учитывать при обновлении переменных среды. Кроме того, переменные могут быть добавлены, изменены или удалены. И вам нужно учитывать переменные среды пути.

Чтобы усугубить ситуацию, в зависимости от того, какой продукт / хост вы используете, когда вы это делаете, у этого продукта может быть какая-то специальная обработка переменных среды, которая должна быть рассмотрена, и не надеяться, что переменные среды Path (те, которые содержат несколько значений, с разделителями с запятой) на самом деле содержат «путь» как часть их имени, вы можете пропустить что-то (если, конечно, это не так, как Windows обрабатывает эти переменные среды внутри, что могло бы быть, я не копал это далеко вниз по кроличьей дыре).

Вот сценарий, с которым я столкнулся, примерно так же близко, как я думаю, вы сможете правильно обновить переменные среды в текущем сеансе PowerShell, не перезапустив его:

# Get all environment variables for the current Process, as well as System and User environment variable values $processValues = [Environment]::GetEnvironmentVariables('Process') $machineValues = [Environment]::GetEnvironmentVariables('Machine') $userValues = [Environment]::GetEnvironmentVariables('User') # Identify the entire list of environment variable names first $envVarNames = ($machineValues.Keys + $userValues.Keys + 'PSModulePath') | Sort-Object | Select-Object -Unique # Now process all of those keys, updating what exists and adding what is new foreach ($envVarName in $envVarNames) { if ($envVarName -eq 'PSModulePath') { $pieces = @() if ($PSVersionTable.PSVersion -ge [System.Version]'4.0') { $pieces += Join-Path -Path ${env:ProgramFiles} -ChildPath 'WindowsPowerShell\Modules' } if (-not $userValues.ContainsKey($envVarName)) { $pieces += Join-Path -Path ([Environment]::GetFolderPath('Documents')) -ChildPath 'WindowsPowerShell\Modules' } else { $pieces += $userValues[$envVarName] -split ';' } if ($machineValues.ContainsKey($envVarName)) { $pieces += $machineValues[$envVarName] -split ';' } [Environment]::SetEnvironmentVariable($envVarName,($pieces -join ';'),'Process') } elseif ($envVarName -match 'path') { $pieces = @() if ($userValues.ContainsKey($envVarName)) { $pieces += $userValues[$envVarName] -split ';' } if ($machineValues.ContainsKey($envVarName)) { $pieces += $machineValues[$envVarName] -split ';' } [Environment]::SetEnvironmentVariable($envVarName,($pieces -join ';'),'Process') } elseif ($userValues.ContainsKey($envVarName)) { [Environment]::SetEnvironmentVariable($envVarName,$userValue[$envVarName],'Process') } elseif ($machineValues.ContainsKey($envVarName)) { [Environment]::SetEnvironmentVariable($envVarName,$machineValue[$envVarName],'Process') } } # Lastly remove the environment variables that no longer exist foreach ($envVarName in $processValues.Keys | Where-Object {$envVarNames -notcontains $_}) { Remove-Item -LiteralPath "env:${envVarName}" }

Обратите внимание, что это в основном непроверено, но принцип звучит, и он основан на работе, которую я делал в прошлом в этой области.

    

askdev.info

about_Updatable_Help | Microsoft Docs

  • 11/23/2015
  • Время чтения: 10 мин

В этой статье

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

РАЗДЕЛ

About_Updatable_Help

КРАТКОЕ ОПИСАНИЕ

Содержит описание обновляемой системы справки в Windows PowerShell®.

ПОДРОБНОЕ ОПИСАНИЕ

Windows PowerShell предоставляет несколько разных способов доступа к самым актуальным разделам справки по командлетам и понятиям Windows PowerShell.

Обновляемая справочная система, появившаяся в Windows PowerShell 3.0, призвана обеспечить наличие новейших разделов справки на локальном компьютере, которые можно читать в командной строке. Она упрощает скачивание и установку файлов справки и их обновление при появлении новых версий.

Для обновления справки на нескольких компьютерах в организации, а также на компьютерах без доступа к Интернету обновляемая справочная система позволяет скачивать файлы справки в папку в файловой системе или в общую папку, а затем устанавливать их из этой папки.

В Windows PowerShell 4.0 свойство HelpInfoUri сохраняется при удаленном взаимодействии Windows PowerShell, благодаря чему командлет Save-Help работает для модулей, которые установлены на удаленном компьютере, но не обязательно установлены на локальном. Объект PSModuleInfo можно сохранить на диск или съемный носитель (например, USB-накопитель), выполнив командлет Export-CliXml на компьютере без доступа к Интернету, импортировав объект PSModuleInfo на компьютер без доступа к Интернету, а затем выполнив командлет Save-Help применительно к объекту PSModuleInfo. Сохраненную справку можно скопировать на удаленный отключенный компьютер с помощью съемного носителя, а затем установить, выполнив командлет Update-Help. Эти улучшения в плане функциональных возможностей командлета Save-Help позволяют установить справку на компьютерах, полностью лишенных доступа к сети. Пример использования новых функциональных возможностей командлета Save-Help см. в подразделе «ОБНОВЛЕНИЕ СПРАВКИ ИЗ ОБЩЕЙ ПАПКИ: SAVE-HELP» этого раздела.

Обновляемая справка также поддерживает доступ к новейшим разделам справки и основной справке по командлетам в Интернете, даже если на компьютере нет файлов справки.

В состав Windows PowerShell 3.0 файлы справки не входят. С помощью функции обновляемой справки можно установить файлы справки по всем командам, которые входят в состав Windows PowerShell по умолчанию, и по всем модулям Windows.

КОМАНДЛЕТЫ ДЛЯ РАБОТЫ С ОБНОВЛЯЕМОЙ СПРАВКОЙ

Update-Help.

Скачивает последние файлы справки из Интернета или общей папки и устанавливает их на локальном компьютере.

Save-Help.

Скачивает последние файлы справки из Интернета и сохраняет их в каталоге файловой системы или в общей папке. Чтобы установить файлы справки на компьютерах, используйте командлет Update-Help.

Get-Help.

Выводит разделы справки в командной строке.

Получает справку из файлов справки на компьютере.

Выводит автоматически создаваемую справку по командлетам и функциям, для которых нет файлов справки.

Открывает разделы справки в Интернете для командлетов, функций, сценариев и рабочих процессов в браузере по умолчанию.

ОБНОВЛЕНИЕ СПРАВКИ В ИНТЕГРИРОВАННОЙ СРЕДЕ СЦЕНАРИЕВ WINDOWS POWERSHELL

Справку можно также обновить с помощью пункта «Обновить справку Windows PowerShell» в меню «Справка» интегрированной среды сценариев Windows PowerShell (ISE).

Пункт «Обновить справку Windows PowerShell» выполняется как команда Update-Help без параметров.

АВТОМАТИЧЕСКИ СОЗДАВАЕМАЯ СПРАВКА: СПРАВКА БЕЗ ФАЙЛОВ СПРАВКИ

Если на компьютере нет файла справки по командлету, функции или рабочему процессу, командлет Get-Help выводит автоматически созданную справку и предлагает скачать файлы справки или прочитать их в Интернете.

Автоматически созданная справка содержит описание синтаксиса и псевдонимов, а также примечания касательно использования командлетов для работы с обновляемой справкой и доступа к разделам справки в Интернете.

Например, приведенная ниже команда возвращает базовую справку по командлету Get-Culture. Если на компьютере нет файлов справки, в выходных данных приводится командлет Get-Help.

PS C:\> Get-Help Get-Culture

НАЗВАНИЕ

Get-Culture

СИНТАКСИС

Get-Culture [<Общие_параметры>]

ПСЕВДОНИМЫ

Нет

ЗАМЕЧАНИЯ

Чтобы получить новейшую справку, включая описания и примеры, введите: Update-Help.

ФАЙЛЫ СПРАВКИ ПО МОДУЛЯМ

Наименьшим блоком обновляемой справки является справка по модулю. Справка по модулю включает справку по всем командлетам, функциям, рабочим процессам, поставщикам, сценариям и концепциям модуля. Вы можете обновить справку по всем установленным на компьютере модулям, даже если они не импортированы в текущий сеанс.

Справку можно обновить для всего модуля, но не для отдельных командлетов.

Чтобы найти модуль, содержащий определенный командлет, используйте следующий формат команды:

(Get-Command <cmdlet-name>).ModuleName

Например, чтобы найти модуль, который содержит командлет Set-ExecutionPolicy, введите следующую команду:

(Get-Command Set-ExecutionPolicy).ModuleName

Чтобы обновить справку по определенному модулю, введите следующую команду:

Update-Help -Module <ModuleName>

Например, чтобы обновить справку по модулю, который содержит командлет Set-ExecutionPolicy, введите следующую команду:

Update-Help -Module Microsoft.PowerShell.Security

РАЗРЕШЕНИЯ ДЛЯ РАБОТЫ С ОБНОВЛЯЕМОЙ СПРАВКОЙ

Для обновления справки по модулям в каталоге $pshome\Modules необходимо быть членом группы администраторов на компьютере.

Если вы не входите в группу «Администраторы», вы не сможете обновить справку для этих модулей. Но если у вас есть доступ к Интернету, вы можете просмотреть справку в Интернете в библиотеке TechNet.

Для обновления справки по модулям в каталоге $home\Documents\WindowsPowerShell\Modules или в других подкаталогах каталога $home особых разрешений не требуется.

Командлеты Update-Help и Save-Help имеют параметр UseDefaultCredentials, который предоставляет учетные данные текущего пользователя в явной форме. Этот параметр предназначен для доступа к защищенным расположениям в Интернете.

Командлеты Update-Help и Save-Help также имеют параметр Credential, который позволяет выполнить команду на удаленном компьютере и получить доступ к общей папке на другом компьютере. Параметр Credential действителен только при использовании параметра SourcePath или LiteralPath командлета Update-Help и параметра DestinationPath или LiteralPath командлета Save-Help.

УСТАНОВКА И ОБНОВЛЕНИЕ ФАЙЛОВ СПРАВКИ

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

Командлет Update-Help выполняет за вас всю сложную работу, включая следующие задачи:

определяет, какие модули поддерживают обновляемую справку;

находит расположение в Интернете, где хранятся файлы обновляемой справки для каждого модуля;

сравнивает имеющиеся на компьютере файлы справки по каждому модулю с последними файлами справки, доступными для него;

скачивает новые файлы из Интернета;

распаковывает файлы справки;

проверяет, являются ли файлы допустимыми файлами справки;

устанавливает файлы справки в подкаталоге для соответствующего языка в каталоге модуля.

Для доступа к новым разделам справки используйте командлет Get-Help. Перезапускать Windows PowerShell не нужно.

Чтобы установить или обновить справку для всех модулей на компьютере, которые поддерживают обновляемую справку, введите следующую команду:

Update-Help

Чтобы обновить справку по определенным модулям, добавьте параметр Module командлета Update-Help. В именах модулей можно использовать подстановочные знаки.

Update-Help -Module ServerManager

ПРИМЕЧАНИЯ

Без параметров командлет Update-Help обновляет справку для всех модулей в сеансе и для всех установленных модулей, которые поддерживают обновляемую справку. Для включения модулей они должны быть установлены в каталогах, указанных в значении переменной среды PSModulePath. Эти модули возвращаются командой «Get-Help -ListAvailable».

Если параметр Module имеет значение «*» (все), командлет Update-Help пытается обновить справку для всех установленных модулей, включая модули, которые не поддерживают обновляемую справку. Эта команда обычно вызывает много ошибок, когда командлет обнаруживает модули, не поддерживающие обновляемую справку.

ОБНОВЛЕНИЕ СПРАВКИ ИЗ ОБЩЕЙ ПАПКИ: SAVE-HELP

Для обновления справки на компьютерах, не подключенных к Интернету, или для более простого и контролируемого обновления справки на предприятии используйте командлет Save-Help. Командлет Save-Help скачивает файлы справки из Интернета и сохраняет их в указанном каталоге файловой системы.

Командлет Save-Help сравнивает файлы справки в указанном каталоге с последними файлами справки, доступными для каждого модуля. Если каталог не содержит файлов справки или для модуля доступны более новые файлы, командлет Save-Help скачивает новые файлы из Интернета. Однако он не распаковывает и не устанавливает файлы справки.

Чтобы установить или обновить файлы справки на компьютере из файлов, которые были сохранены в каталоге файловой системы, используйте параметр SourcePath командлета Update-Help. Командлет Update-Help определяет последние файлы справки, распаковывает и проверяет их, а затем устанавливает в подкаталогах, соответствующих выбранным языкам, в каталогах модулей.

Например, чтобы сохранить справку по всем установленным модулям в каталоге \\Server\Share, введите следующую команду:

Save-Help -DestinationPath \\Server\Share

Чтобы затем обновить справку из каталога \\Server\Share, введите следующую команду:

Update-Help -SourcePath \\Server\Share

В примерах ниже показано использование командлета Save-Help для сохранения справки для модулей, которые не установлены на локальном компьютере. В этом примере администратор выполняет командлет Save-Help для сохранения справки по модулю DhcpServer с клиентского компьютера, подключенного к Интернету, без установки роли DHCP-сервера или модуля DhcpServer на локальном компьютере.

Вариант 1.

Выполните командлет Invoke-Command, чтобы получить объект PSModuleInfo для удаленного модуля, сохраните его в переменной $m, а затем выполните командлет Save-Help применительно к объекту PSModuleInfo, указав переменную $m в качестве имени модуля.

$m = Invoke-Command -ComputerName RemoteServer -ScriptBlock { Get-Module -Name DhcpServer -ListAvailable } Save-Help -Module $m -DestinationPath C:\SavedHelp

Вариант 2.

Откройте сеанс PSSession для компьютера, на котором запущен модуль DHCP-сервера, чтобы получить объект PSModuleInfo для модуля, сохраните его в переменной $m, а затем выполните командлет Save-Help применительно к объекту, который сохранен в переменной $m.

$s = New-PSSession -ComputerName RemoteServer $m = Get-Module -PSSession $s -Name DhcpServer -ListAvailable Save-Help -Module $m -DestinationPath C:\SavedHelp

Вариант 3.

Откройте сеанс CIM для компьютера, на котором запущен модуль DHCP-сервера, чтобы получить объект PSModuleInfo для модуля, сохраните его в переменной $m, а затем выполните командлет Save-Help применительно к объекту, который сохранен в переменной $m.

$c = New-CimSession -ComputerName RemoteServer $m = Get-Module -CimSession $c -Name DhcpServer -ListAvailable Save-Help -Module $m -DestinationPath C:\SavedHelp

В примере ниже администратор устанавливает справку по модулю DHCP-сервера на компьютере, который не имеет доступа к сети.

Сначала выполните командлет Export-CliXml, чтобы экспортировать объект PSModuleInfo в общую папку или на съемный носитель.

$m = Get-Module -Name DhcpServer –ListAvailable Export-CliXml –Path E:\UsbFlashDrive\DhcpModule.xml –InputObject $m

Затем перенесите съемный носитель на компьютер с доступом к Интернету и импортируйте объект PSModuleInfo с помощью командлета Import-CliXml. Выполните командлет Save-Help, чтобы сохранить справку для объекта PSModuleInfo импортированного модуля DhcpServer.

$deserialized_m = Import-CliXml E:\UsbFlashDrive\DhcpModule.xml Save-Help -Module $deserialized_m –DestinationPath E:\UsbFlashDrive\SavedHelp

Наконец, перенесите съемный носитель обратно на компьютер, который не имеет доступа к сети, и установите справку, выполнив командлет Update-Help.

Update-Help –Module DhcpServer –SourcePath E:\UsbFlashDrive\SavedHelp

ПРИМЕЧАНИЯ:

Без параметров командлет Save-Help скачивает справку для всех модулей в сеансе и для всех установленных модулей, которые поддерживают обновляемую справку. Для включения модулей они должны быть установлены в каталогах, указанных в значении переменной среды PSModulePath, на локальном или удаленном компьютере, для которого нужно сохранить справку. Эти модули возвращаются командой «Get-Help -ListAvailable».

ОБНОВЛЕНИЕ ФАЙЛОВ СПРАВКИ НА ДРУГИХ ЯЗЫКАХ

По умолчанию командлеты Update-Help и Save-Help скачивают справку на языке пользовательского интерфейса, выбранного в системе Windows на локальном компьютере. Если файлы справки для указанных модулей недоступны на локальном языке пользовательского интерфейса, командлеты Update-Help и Save-Help используют правила возврата к базовому языку Windows, чтобы определить наиболее подходящий язык.

Однако с помощью параметра UICulture командлетов Update-Help и Save-Help можно скачать и установить файлы справки на любых языках пользовательского интерфейса, на которых они доступны.

Например, чтобы сохранить последние файлы справки для всех модулей в сеансе на японском (Ja-jp) и французском (fr-FR) языках, введите следующую команду:

Save-Help -Path \\Server\Share -UICulture ja-jp, fr-fr

Если файлы справки по модулям недоступны на указанных языках, командлеты Update-Help и Save-Help возвращают сообщение об ошибке с перечислением языков, на которых доступна справка по каждому модулю, так что вы можете выбрать наиболее подходящий вариант.

АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ СПРАВКИ

Чтобы обеспечить постоянное наличие последних файлов справки, можно добавить команду Update-Help в свой профиль Windows PowerShell.

Внутренняя квота запрещает выполнение команды Update-Help чаще, чем один раз в день. Чтобы переопределить это ограничение, используйте параметр Force.

Используйте в своем профиле команду наподобие приведенной ниже. Эта команда обновляет справку для всех установленных модулей в фоновом режиме, не мешая вам работать. В ней используется команда Out-Null, чтобы отключить возврат из задания и сообщения об ошибках, которые отображаются при использовании команды чаще, чем один раз в день.

Start-Job {Update-Help} | Out-Null

Также можно создать запланированное задание, которое выполняет командлет Update-Help или Save-Help через любой промежуток времени.

Например, приведенная ниже команда создает запланированное задание, которое выполняет командлет Update-Help каждую пятницу в 5:00. Чтобы выполнить эту команду, запустите Windows PowerShell в режиме «Запуск от имени администратора».

Register-ScheduledJob -Name UpdateHelpJob -ScriptBlock {Update-Help} ` -Trigger (New-JobTrigger -Weekly -DaysOfWeek Friday -At "5:00 AM")

Подробнее о запланированных заданиях см. в разделе about_Scheduled_Jobs.

ИСПОЛЬЗОВАНИЕ СПРАВКИ В ИНТЕРНЕТЕ

Если вы не можете или не хотите обновлять файлы справки на локальном компьютере, то можете получить доступ к последним файлам справки в Интернете.

Чтобы открыть справку по любому командлету или функции в Интернете, используйте параметр Online командлета Get-Help.

Например, приведенная ниже команда открывает раздел веб-справки по командлету Get-Job в браузере по умолчанию.

Get-Help Get-Job -Online

– или –

Get-Help -on Get-Job

Чтобы открыть справку по сценарию в Интернете, используйте параметр Online и полный путь к сценарию.

Параметр Online не работает с общими разделами справки. Чтобы получить доступ к общим разделам, касающимся базовых модулей Windows PowerShell, включая разделы справки по языку Windows PowerShell, посетите страницу «Разделы справки по модулю Windows PowerShell Core» по адресу http://go.microsoft.com/fwlink/?LinkID=113206.

СВЕДЕНИЕ К МИНИМУМУ ИЛИ ПРЕДОТВРАЩЕНИЕ СКАЧИВАНИЯ ФАЙЛОВ ИЗ ИНТЕРНЕТА

Чтобы свести к минимуму скачивание файлов из Интернета и предоставить обновляемую справку пользователям, не имеющим доступа к Интернету, используйте командлет Save-Help. Скачайте справку из Интернета и сохраните ее в сетевой папке. Затем создайте параметр групповой политики или запланированное задание, которое выполняет команду Update-Help на всех компьютерах. Укажите сетевую папку в качестве значения параметра SourcePath командлета Update-Help.

Чтобы запретить пользователям, которые имеют доступ к Интернету, скачивать обновляемую справку из Интернета, используйте параметр групповой политики «Задать исходный путь по умолчанию для Update-Help».

Этот параметр неявно добавляет параметр SourcePath с указанной папкой файловой системы в качестве значения к каждой команде Update-Help на каждом затронутом компьютере. С помощью параметра SourcePath пользователи могут явно указать другую папку файловой системы, но не могут исключить параметр SourcePath и скачать справку из Интернета.

ПРИМЕЧАНИЕ.

Параметр групповой политики «Задать исходный путь по умолчанию для Update-Help» находится в разделах «Конфигурация компьютера» и «Конфигурация пользователя». Тем не менее, силу имеет только параметр политики в разделе «Конфигурация компьютера». Параметр политики в разделе «Конфигурация пользователя» игнорируется.

Подробнее см. в разделе about_Group_Policy_Settings.

ОБНОВЛЕНИЕ СПРАВКИ ДЛЯ НЕСТАНДАРТНЫХ МОДУЛЕЙ

Чтобы обновить или сохранить справку по модулю, который не возвращается параметром ListAvailable командлета Get-Module, импортируйте модуль в текущий сеанс перед выполнением команды Update-Help или Save-Help. На удаленном компьютере, прежде чем выполнять команду Save-Help, импортируйте модуль в текущей сеанс CIM или PSSession либо в блок сценария Invoke-Command, подключенный к удаленному компьютеру.

Когда модуль будет включен в текущий сеанс, выполните командлет Update-Help или Save-Help без параметров либо укажите имя модуля с помощью параметра Module.

Параметр Module командлетов Update-Help и Save-Help принимает в качестве значения только имя модуля. Он не принимает путь к файлу модуля.

Используйте этот прием для обновления или сохранения справки по любому модулю, который не возвращается параметром ListAvailable командлета Get-Module, например по модулю, установленному в папке, которая не указана в переменной среды PSModulePath, или модулю, имеющему неправильный формат (каталог модуля не содержит ни одного файла, базовое имя которого совпадает с именем каталога).

ПОДДЕРЖКА ОБНОВЛЯЕМОЙ СПРАВКИ

При создании модуля вы можете обеспечить для него справку в Интернете и обновляемую справку. Подробнее см. в разделах «Поддержка обновляемой справки» и «Поддержка справки в Интернете» в библиотеке MSDN.

Обновляемая справка не доступна для оснасток Windows PowerShell и справки на основе комментариев.

КЛЮЧЕВЫЕ СЛОВА

About_Updateable_Help

ЗАМЕЧАНИЯ

Командлеты Update-Help и Save-Help не поддерживаются в среде предустановки Windows (Windows PE).

СМ. ТАКЖЕ

Get-Help

Save-Help

Update-Help

Таблица состояния обновляемой справки

(http://go.microsoft.com/fwlink/?LinkID=270007)

technet.microsoft.com