Win2008R2 の PowerShell 2.0 で、レジストリ キーから同じ出力を取得したい場合は、次のように、特定のレジストリ キーからの値を使用して、「REG QUERY」が読み取り可能な形式で提供します。
reg query hkcu\Software\Microsoft\CharMap
HKEY_CURRENT_USER\Software\Microsoft\CharMap
Advanced REG_DWORD 0x0
CodePage REG_SZ Unicode
Font REG_SZ Arial
PowerShell でそれを行うにはどうすればよいですか? PowerShell の動作は、またしても私を当惑させます。
Get-ItemProperty の例:
Get-ItemProperty HKCU:\Software\Microsoft\CharMap
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\CharMap
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft
PSChildName : CharMap
PSDrive : HKCU
PSProvider : Microsoft.PowerShell.Core\Registry
Advanced : 0
CodePage : Unicode
Font : Arial
上記の不自然な例では、「Advanced」、「CodePage」、および「Font」を表示したいのですが、PowerShell メタデータ (PS で始まる名前) は表示したくありません。悲しいことに、「PS」という名前でのフィルタリングは機能しません。MS Windows の Character Map 設定を実際に読み取ろうとしているわけではないためです。おそらく Windows を使用しているすべての人が持っているレジストリ キーとしてそれらを選択しただけなので、誰もがどれほど完全であるかを確認できます。 PowerShell の使用経験とは異なり、プログラムと比較して、レジストリを調べますREG.EXE
。メタデータを一切取得せずにレジストリ キーからレジストリ値だけを取得したい場合や、PowerShell でツールを作成する場合は、この単純なタスクを実行したい場合があります。
REG QUERY
テキストにフラット化されているだけでなく、ネイティブの PowerShell 形式でも同様の出力が必要です。私はググってあちこち検索しましたが、これを理解できないようです。
たとえば、次のことができるようにしたいと思います。
$all = GetRealRegistryKeysFrom( HKCU:\Software\Microsoft\CharMap )
for ($item in $all) { ... }
更新以下の関数を使用すると、うまく機能します....
例Get-RegistryKeyPropertiesAndValues -path HKCU:\Software\.....