दिया...
HKLM\Software\
KeyName
Property_1
Property_2
Property_[0-1]
Key*Name
Property_1
Property_2
Property_[0-1]
Key@Name
Property_1
Property_2
Property_[0-1]
मैं का उपयोग कर सकते हैं
Get-Item -path:"Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name"
जो वापस आ जाएगी KeyName
, Key*Name
और Key@Name
है , जबकि
Get-Item -literalPath:"Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name"
वापस आ जाएगी बस Key*Name
. अब तक तो अच्छा है. मैं का उपयोग कर सकते हैं पथ-या -literalPath जरूरत के रूप में करने के लिए या तो एक कुंजी के लिए खोज वाइल्डकार्ड के साथ है या नहीं. लेकिन गुण एक समस्या उत्पन्न.
Get-ItemProperty -path:"Registry::HKEY_LOCAL_MACHINE\SOFTWARE\KeyName" -name:"Prop_[0-9]"
काम करता है के रूप में की उम्मीद है और रिटर्न Prop_1
& Prop_2
से KeyName
कुंजी. और
Get-ItemProperty -literalPath:"Registry::HKEY_LOCAL_MACHINE\SOFTWARE\KeyName" -name:"Prop_[0-9]"
काम करता है के रूप में की उम्मीद है और रिटर्न सिर्फ Prop_[0-9]
से एक ही कुंजी । लेकिन यह सब विफल रहता है इसके अलावा, जब आप की जरूरत करने के लिए एक वाइल्डकार्ड का उपयोग करने के लिए गुण को खोजने, एक पथ में शामिल है कि एक वाइल्डकार्ड वर्ण के रूप में एक शाब्दिक में प्रमुख मार्ग है । तो...
Get-ItemProperty -path:"Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name" -name:"Prop_[0-9]"
रिटर्न Prop_1
& Prop_2
से सभी तीन चाबियाँ. नहीं वांछित व्यवहार पर सभी.
मैं आशा व्यक्त की थी किया जा करने के लिए सक्षम करने के लिए फिल्टर पर PSPath
का उपयोग कर -`literalPath' लेकिन इस
Get-ItemProperty -literalPath:"Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name" -name:"Prop_[0-9]" | where {$_.PSPath -match [RegEx]::Escape("Key*Name")}
वापस नहीं करता है सही गुण है । ऐसा लगता है कि एक -literalPath
मतलब एक शाब्दिक नाम भी है । तो मैं करने की कोशिश की पर छानने PSPath
और Name
तो
Get-ItemProperty -literalPath:"Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name" -name:"Prop_[0-9]" | where {(($_.PSPath -match [RegEx]::Escape("Key*Name")) -and ($_.Name -match "Prop_[0-9]"))}
लेकिन काम नहीं करता है कि क्योंकि एक बार जब आप वास्तव में वास्तविक गुण है, वे नहीं रह रहे हैं .शुद्ध प्रकार, वे किया गया है shat में एक PSCustomObject
.
और है कि शुरू कर पाने के लिए इतना जटिल मुझे आश्चर्य है कि अगर वहाँ एक बेहतर तरीका है करने के लिए आगे बढ़ें । मैं नोट करना चाहिए कि अंतिम लक्ष्य यहाँ है पाने के लिए दोनों एक शाब्दिक रास्ते और एक सूची का शाब्दिक संपत्ति के नाम, इतना है कि मैं कर सकते हैं, चाल, कॉपी या हटाने के गुण है । तो, दिए गए एक पथ के Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name
और एक नाम के Prop_[0-9]
मैं अंततः के लिए चाहते हैं, उदाहरण के लिए, को नष्ट
HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name\Prop_1
&
HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name\Prop_2
लेकिन नहीं
HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name\Prop_[0-9]
संपादित करें: के आधार पर जवाब देने से @Tomalak मैं सरल है एक बिट करने के लिए, बस वापस पाने के लिए एक सूची संपत्ति के नाम है । है कि इस तरह दिखता है
$keyPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name"
$propExpr = "Prop_[0-9]"
((Get-Item -literalPath:$keyPath | Get-ItemProperty).PSObject.Properties | Where-Object Name -Match $propExpr | ForEach-Object {$_.Name})
Get-Item -literalPath 'HKLM:\SOFTWARE\Key*Name\' | Select-Object -ExpandProperty property | Where {$_ -match "Prop_[0-9]"}
. अब मैं एक अधिक सामान्य उद्देश्य दृष्टिकोण. समय के साथ एकीकृत करने के लिए. किसी और के लिए चाहते हैं बनाने के लिए यह काम करते हैं,-literalPath
होना चाहिए$keyPath
नहीं$key
है , और$keyPath
साथ शुरू करने की जरूरतRegistry::
याHKLM:
.