В этой статье вы узнаете, как использовать PowerShell для получения значения реестра и запроса записей в реестре с использованием различных методов.
Давайте начнем!
Предварительные требования
Все примеры в этой статье будут продемонстрированы с использованием PowerShell 7.1, который на момент публикации статьи является последней версией. Вы также можете использовать Windows PowerShell 5.1, если хотите. Вам также следует иметь базовое понимание драйверов PowerShell.
Некоторые примеры могут не работать без прав администратора.
Получение ключей и значений реестра с помощью Get-ChildItem
Одним из самых простых способов найти ключи и значения реестра является использование командлета Get-ChildItem
. Он использует PowerShell для получения значения реестра и других данных, перечисляя элементы в драйверах PowerShell. В данном случае драйвером PowerShell является драйвер HKLM, найденный при выполнении команды Get-PSDrive
.
Выполните следующую команду в консоли PowerShell.
На скриншоте ниже вы можете видеть:
- Полный путь к ключу реестра WindowsUpdate
- Ключ AU
- Список записей реестра в ключе AU с соответствующими значениями

Один быстрый момент относительно приведенного выше скриншота. Вы можете заметить, что вывод немного вводит в заблуждение. Обычно, вывод консоли PowerShell представляет свойства объекта. Get-ChildItem
ведет себя иначе в этом случае, потому что у этого объекта технически нет свойств. Дополнительные команды запускаются в фоновом режиме для создания форматирования отображения, которое вы видите.
См. также: Как проверить ожидающую перезагрузку в реестре Windows
Получение значений реестра с помощью командлета Get-ItemProperty
Продолжим с тем же ключом реестра, что и ранее, и в этот раз используем командлет Get-ItemProperty
, чтобы сделать вывод более читаемым.
Использование Get-ItemProperty
наилучшим образом подходит для получения свойств элемента, получения ключей и их значений внутри реестра. Выполните следующую команду:
На скриншоте ниже вы видите список ключей и значений:
- Для контейнера реестра AU
- свойства, связанные с PowerShell, которые все начинаются с PS

Кроме того, вы также можете указать путь к элементу реестра, чтобы получить тот же вывод, только немного быстрее, используя .NET. Нижеприведенная команда использует класс реестра .NET в PowerShell для получения значения реестра:
Получение значений реестра с помощью команды Get-ItemPropertyValue
Теперь пришло время посмотреть на ключевые значения. С помощью командлета Get-ItemPropertyValue
с тем же контейнером реестра, что и раньше, давайте посмотрим значение для ключа NoAutoUpdate
. Выполните следующую команду PowerShell:
Используя Get-ItemPropertyValue
, вы получите более краткий вывод, показывающий только значение, а не всю другую информацию, которую вы видели ранее.

Запрос реестра без использования дисков PS
На протяжении этого руководства вы использовали диски PowerShell для работы с реестром. Но это не единственный способ; вы также можете использовать .NET и получать информацию о реестре с помощью классов .NET!
Например, возможно, вам нужно использовать PowerShell для получения значения реестра HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ : AutoUpate на удаленном компьютере.
Вы можете сделать это с помощью .NET, выполнив следующие действия:
- Открытие соединения с реестром на удаленном компьютере.
2. Открытие конкретного ключа реестра, который вы ищете.
3. Использование метода GetValue()
для запроса значения реестра внутри ключа реестра.
Использование .NET вместо дисков PowerShell немного быстрее и является простым способом подключиться и использовать PowerShell для запроса ключей и значений реестра на удаленных компьютерах.
Проверка значений реестра с помощью Test-Path
Иногда вам просто нужно проверить, есть ли значение реестра. Вы можете сделать это с помощью командлета Test-Path
.
Продолжая работу с контейнером WindowsUpdate, проверьте наличие контейнера AU, запустив следующую команду PowerShell:
Если результатом является True, то ключ или контейнер существуют. Но что делать, если вам нужно проверить наличие значения или записи? Давайте создадим пользовательскую функцию для этого теста:
Используя пользовательскую функцию, вы вводите путь и имя ключа или контейнера, а также значение, которое вы ищете, и пользовательская функция возвратит True или False (3), как показано на скриншоте ниже:

Следующие шаги
Знайте, что вы можете использовать команды Get-ChildItem
, Get-ItemProperty
и Get-ItemPropertyValue
в PowerShell для получения значения и ключей реестра, что еще можно сделать?
Если вы хотите узнать больше о работе с реестром с помощью PowerShell, ознакомьтесь со статьей от Microsoft Docs, озаглавленной “Работа с ключами реестра”. Вы также можете найти отличную демонстрацию установки значений реестра в сообщении блога ATA Использование активной настройки: Как задать значение реестра во всех пользователях.
Source:
https://adamtheautomator.com/powershell-to-get-a-registry-value/