Get-ItemProperty для всех свойств удаленного раздела реестра, когда значение name неизвестно - PullRequest
0 голосов
/ 22 апреля 2020

Похожие сообщения , такие как этот или Этот объясняют, как получить удаленный ключ реестра, но предполагается, что вы уже знаете имя интересующего вас значения Если вы запустите

Get-ItemProperty "HKLM:\Software\MySoftware" 

, он вернет все свойства и их соответствующие значения, но Get-ItemProperty не работает для удаленных машин. Если вы хотите сделать то же самое для удаленного раздела реестра, вы можете использовать подход [Microsoft.Win32.RegistryKey], но это только половина ответа. В качестве примера:

$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $myServer)
$RegKey= $Reg.OpenSubKey("SOFTWARE\\MySoftware")

$ RegKey станет System.MarshalByRefObject. Это означает, что это не фактический ключ, а просто открывает возможность продолжать запрашивать дополнительную информацию из этого ключа. Использование $ RegKey.GetValue () требует, чтобы вы знали значение, которое вы хотите получить, но что, если вы хотите получить все значения для ключа, но не знаете, сколько существует значений или их имен? Как бы вы go сделали это?

1 Ответ

0 голосов
/ 22 апреля 2020

После того, как вы открыли $ RegKey, вы можете использовать следующее:

$RegKey.GetValueNames()

Это создаст список всех свойств элемента и их значений. Затем вы можете l oop пройти по этому списку с помощью foreach, чтобы получить значение для всех свойств элемента, таких как:

foreach($ItemProperty in $RegKey.GetValueNames()){
    $RegKey.GetValue($ItemProperty)
}

Бонус: Если вы хотите экспортировать это в, скажем, файл CSV вы можете создать пользовательский объект PS и экспортировать его в файл CSV следующим образом:

foreach($ItemProperty in $RegKey.GetValueNames()){
    $myObject = [PSCustomObject]@{
        ItemProperty = $ItemProperty
        Value = $RegKey.GetValue($ItemProperty)
    } | Export-Csv "yourpath\yourfile.csv" -Append -Delimiter "|" -NoTypeInformation
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...