0

私はPowerShellスクリプトを書いていますが、問題が発生しました。1つの値を含むレジストリキーがあります。値ではなく、値の名前を抽出する必要があります。もう少し明確にするために、DWORD値[@ 10.105.1.1=64]を含むキーについて考えてみましょう。値の名前(この場合は10.105.1.1)を抽出できるようにしたい。設定されている値64は使用しません。また、レジストリキーを作成しておらず、値の名前は別のシステムで使用される設定であるため、コンピューターごとに異なり、設定データにアクセスしようとしているだけであることに注意してください。

4

2 に答える 2

1

指定したレジストリキーですべての値を取得し、値のデータでフィルタリングしてから、値の名前を取得できます。次の例では、CurrentVersionキーの下に値を一覧表示し、データ(ゲーム)に基づいて値をフィルター処理し、値の名前(SM_GamesName)を取得します。この例では、PSRemoteRegistryモジュールが必要です。

Import-Module PSRemoteRegistry
$key = 'SOFTWARE\Microsoft\Windows\CurrentVersion'

Get-RegValue -Hive LocalMachine -Key $key | 
Where-Object {$_.Data -eq 'games'} | 
Foreach-Object { $_.Value }

SM_GamesName
于 2012-07-03T07:51:34.047 に答える
0

スクリプトを使用してすべての値を再帰的に返すことを検討してきました。

# get-reg.ps1

Param($key)

Get-Item $key | foreach-object {
  $path = $_.PSPath
  $_.Property | foreach-object {
    $name = $_
    $data = get-itemproperty -literalpath $path -name $name |
      select -expand $name
    [pscustomobject]@{value=$name; data=$data; key=$path}
  }
}

Get-ChildItem -Recurse $key | foreach-object { # won't process top key
  $path = $_.PSPath
  $_.Property | foreach-object {
    $name = $_
    # there is a key named "*" under hklm:\software\classes
    $data = get-itemproperty -literalpath $path -name $name | 
      select -expand $name
    [pscustomobject]@{value=$name; data=$data; key=$path}
  }
}

PS C:\Users\js2010> .\get-reg hkcu:\key1

value     data     key
-----     ----     ---
value1    data1    Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\key1
(default) hi       Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\key1
value2    data2    Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\key1\key2
于 2018-09-03T02:11:13.873 に答える