variables – How do I get the value of a registry key and ONLY the value using powershell – Stack Overflow

How do i get the value of a registry key and only the value using powershell

Harry Martyrossian mentions in a comment on his own answer that the
Get-ItemPropertyValue cmdlet was introduced in Powershell v5, which solves the problem:

PS> Get-ItemPropertyValue 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersion' 'ProgramFilesDir'
C:Program Files

Alternatives for PowerShell v4-:

Here’s an attempt to retain the efficiency while eliminating the need for repetition of the value name, which, however, is still a little cumbersome:

& { (Get-ItemProperty `
      -LiteralPath HKLM:SOFTWAREMicrosoftWindowsCurrentVersion `
      -Name $args `
    ).$args } 'ProgramFilesDir'

By using a script block, the value name can be passed in once as a parameter, and the parameter variable ($args) can then simply be used twice inside the block.

Alternatively, a simple helper function can ease the pain:

function Get-RegValue([String] $KeyPath, [String] $ValueName) {
  (Get-ItemProperty -LiteralPath $KeyPath -Name $ValueName).$ValueName
}

Note: All solutions above bypass the problem described in Ian Kemp’s‘s answer – the need to use explicit quoting for certain value names when used as property names; e.g., .'15.0' – because the value names are passed as parameters and property access happens via a variable; e.g., .$ValueName


As for the other answers:

Powershell реестр windows —

введение:

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_CURRENT_CONFIG

HKEY_CURRENT_USER

HKEY_USERS

Допустимые для создания элементы:

Команды ля работы с реестром:

Registry keys: powershell different from regedit

I’m getting different results when I interrogate my registry, depending on the method used. Why is this? Is it some 32-bit v 64-bit trickiness? How do I get the RegEdit answers via PowerShell?

Method 1 – RegEdit

If I browse to HKLMSOFTWARE in RegEdit.exe, I see a list of subkeys, starting with:

7-Zip
Alps 

Method 2 – PowerShell

ForEach-Object{Get-ChildItem -Path 'HKLM:SOFTWARE'} | Select PSChildName

produces a list, starting with:

Adobe
ATI

Method 3 – reg query

:/>  Как создать загрузочную USB-флешку при помощи CMD в Windows 10 - 2021 год

Just for fun I tried a third method I discovered while hunting on Stack Overflow for an answer:

reg query hklmSOFTWARE

returns a list, starting with:

HKEY_LOCAL_MACHINESOFTWAREAdobe
HKEY_LOCAL_MACHINESOFTWAREATI

Как действует сценарий?

Сценарий Search-Registry.ps1 допускает возможность конвейерного ввода данных, поэтому в нем используются блоки сценария begin и process. Блок begin содержит код инициализации сценария: декларации глобальных переменных, средства проверки параметров и определения функций.

Блок сценария process последовательно перебирает все имена компьютеров, которые передаются сценарию, и передает очередное имя компьютера функции search-registry2. Последняя с помощью статического метода OpenRemoteBaseKey класса. NET Microsoft.Win32.

RegistryKey открывает ветвь реестра, запрошенную в командной строке, и затем передает имя каждого компьютера функции search-registrykey. Функция search-registrykey выполняет рекурсивный поиск шаблона регулярного выражения в разделе реестра (то есть она начинает поиск в указанном разделе и захватывает все подразделы данного раздела).

Как изменить значение параметра реестра

Чтобы изменить значение данного параметра, воспользуемся командлетом Set-ItemProperty:

Set-ItemProperty -Path ‘HKLM:SOFTWAREMicrosoftWindowsCurrentVersionDriverSearching’ -Name SearchOrderConfig -Value 0

Проверим, что значение изменилось:

Get-ItemProperty -Path ‘HKLM:SOFTWAREMicrosoftWindowsCurrentVersionDriverSearching’ -Name SearchOrderConfig

Как переименовать ключ или параметр

Для переименования параметра воспользуйтесь командой:

Rename-ItemProperty –path ‘HKCU:Control PanelDesktopNewKey’ –name “SuperParamString” –newname “OldParamString”Аналогично можно переименовать ветку реестра:

Rename-Item -path ‘HKCU:Control PanelDesktopNewKey’ OldKey

Как создать новый раздел (ключ) или параметр реестра

Для добавления новой ветки реестра, воспользуемся командой New-Item. Создадим новую ветку с именем NewKey:

$HKCU_Desktop= “HKCU:Control PanelDesktop”New-Item –Path $HKCU_Desktop –Name NewKeyДля созданной ветки добавим новый строковый параметр с именем SuperParamString и значением file_name.txt :

New-ItemProperty -Path $HKCU_DesktopNewKey -Name “SuperParamString” -Value ”file_name.txt”  -PropertyType “String”

Убедитесь, что в реестре появился новый ключ и параметр.

Навигация в реестре с помощью powershell

Работа с реестром системы в PowerShell похожа на работу с обычными файлами на локальном диске.

:/>  Почему диск бывает загружен на 100% в Windows 10 | Windows для системных администраторов

Выведем список доступных дисков:

get-psdrive

Поиск в реестре без лишних хлопот

Листинг 1. Сценарий Search-Registry.ps1

Поиск в реестре с помощью powershell

PowerShell позволяет также выполнять поиск по реестру. Следующий скрипт выполняет поиск по ветке HKCU:Control PanelDesktop параметров, в имени которых содержится ключ dpi.

$Path = (Get-ItemProperty ‘HKCU:Control PanelDesktop’)$Path.PSObject.Properties | ForEach-Object {If($_.Name -like ‘*dpi*’){Write-Host $_.Name ‘ = ‘ $_.Value}}

Примеры команд

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

Search-Registry -StartKey HKCR -Pattern "Word.Document.d» -MatchKey

Эта команда сканирует реестр локального компьютера, начиная с ветви HKEY_ CLASSES_ROOT, в поисках шаблона -Word.Document.d?. В регулярных выражениях точка (.) соответствует любому символу, обратная косая черта означает «следующий символ нужно воспринимать буквально».

Таким образом, -? означает -?. Обратная косая черта, стоящая перед буквой d (d), означает «любое десятичное число»; таким образом, данная операция поиска выявит подразделы реестра с именем Word.Document.n (где n — некое число). Если данная команда возвратит совпадение, это, по-видимому, будет означать, что в локальной системе имеется приложение, способное открывать документы Microsoft Word.

Удаление раздела или параметра реестра

Удалим созданный ранее параметр SuperParamString:

$HKCU_Desktop= “HKCU:Control PanelDesktop”Remove-ItemProperty –Path $HKCU_DesktopNewKey –Name “SuperParamString”

А затем удалим целиком ветку:

Remove-Item –Path $HKCU_DesktopNewKey –Recurse

Примечание. Ключ –Recurse говорит о том, что нужно рекурсивно без подтверждения удалить все вложенные подразделы

Для удаления всех элементов в ветке, но не самого раздела, команда будет такой:

Remove-Item –Path $HKCU_DesktopNewKey* –Recurse

Удаленный доступ к реестру с помощью powershell

PowerShell позволяеь получить доступ к реестру удаленного компьютера. К удаленном компьютеру можно подключится как через WinRM (Invoke-Command или Enter-PSSession):

Оставьте комментарий

Adblock
detector