我試圖感受一下在PowerShell中使用的成語。如何在PowerShell中按名稱和值過濾名稱/值對下的註冊表項?
鑑於此腳本:
$path = 'hkcu:\Software\Microsoft\Windows\CurrentVersion\Extensions'
$key = Get-Item $path
$key
我得到這個問題的底部輸出。
我想獲得輸出的屬性(名稱/值對下的$key
),我可以在名稱和價值過濾。
例如,過濾器列出所有具有擴展:
- 名狀
xls*
- 或價值一樣
*\MSACCESS.EXE
或排除過濾器:排除像doc*
冷杉的第一個過濾器,我想要這樣的結果:
Name Value
---- --------
xlsx C:\PROGRA~2\MICROS~1\Office15\EXCEL.EXE
xls C:\PROGRA~2\MICROS~1\Office15\EXCEL.EXE
mdb C:\PROGRA~2\MICROS~1\Office15\MSACCESS.EXE
mda C:\PROGRA~2\MICROS~1\Office15\MSACCESS.EXE
這是腳本的原始輸出:
Hive: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
Name Property
---- --------
Extensions rtf : C:\PROGRA~2\MICROS~1\Office15\WINWORD.EXE ^.rtf
dot : C:\PROGRA~2\MICROS~1\Office15\WINWORD.EXE ^.dot
dotm : C:\PROGRA~2\MICROS~1\Office15\WINWORD.EXE ^.dotm
dotx : C:\PROGRA~2\MICROS~1\Office15\WINWORD.EXE ^.dotx
docm : C:\PROGRA~2\MICROS~1\Office15\WINWORD.EXE ^.docm
docx : C:\PROGRA~2\MICROS~1\Office15\WINWORD.EXE ^.docx
doc : C:\PROGRA~2\MICROS~1\Office15\WINWORD.EXE ^.doc
xlsx : C:\PROGRA~2\MICROS~1\Office15\EXCEL.EXE
xls : C:\PROGRA~2\MICROS~1\Office15\EXCEL.EXE
mdb : C:\PROGRA~2\MICROS~1\Office15\MSACCESS.EXE
mda : C:\PROGRA~2\MICROS~1\Office15\MSACCESS.EXE
編輯
我解決了這個問題的一部分:越來越名稱/值對的列表。它採用PSCustomObject:
$namevalues = $key.GetValueNames() | ForEach-Object { [pscustomobject]@{ Name=$_; Value=$key.GetValue($_) } }
$namevalues
(我應該如何換行代碼?)
與過濾任何幫助,將不勝感激
謝謝。我從來沒有聽說過'PSObject'屬性,因爲它不會與'Get-Member'一起顯示,但顯然它是隱藏的,因爲它存在於任何PowerShell對象上。今天學到了一件偉大的新事物。 +1並被接受。 –