Powershell, रजिस्ट्री और वाइल्डकार्ड ओह, मेरे

0

सवाल

दिया...

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})
powershell registry wildcard
2021-11-16 08:27:28
1

सबसे अच्छा जवाब

2

इस मिल जाएगा एक रजिस्ट्री कुंजी के द्वारा शाब्दिक पथ और फिल्टर अपने गुण regex से मेल

$keyPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Key*Name"
$propExpr = "Prop_[0-9]"

Get-Item -literalPath $keyPath -PipelineVariable key | Get-ItemProperty | ForEach-Object {
    $_.PSObject.Properties | Where-Object Name -Match $propExpr | ForEach-Object {
        [pscustomobject]@{
            key = $key.Name
            prop = $_.Name
            value = $_.Value
        }
    }
}

के बजाय $key.Name आप कर सकते हैं पाठ्यक्रम वापसी की वास्तविक $key अगर है कि और अधिक सुविधाजनक के लिए अपने काम है ।

2021-11-16 10:57:44

मैं था बस प्राप्त करने में कामयाब करने के लिए कुछ काम है, अर्थात् Get-Item -literalPath 'HKLM:\SOFTWARE\Key*Name\' | Select-Object -ExpandProperty property | Where {$_ -match "Prop_[0-9]"}. अब मैं एक अधिक सामान्य उद्देश्य दृष्टिकोण. समय के साथ एकीकृत करने के लिए. किसी और के लिए चाहते हैं बनाने के लिए यह काम करते हैं, -literalPath होना चाहिए $keyPath नहीं $keyहै , और $keyPath साथ शुरू करने की जरूरत Registry:: या HKLM:.
Gordon

@गॉर्डन आप सही कर रहे हैं, उन लोगों के थे oversights जब मैं अनुवाद किया मेरे परीक्षण कोड है । तय की ।
Tomalak

कोई चिंता नहीं है । यह वास्तव में मेरे लिए वास्तव में अच्छा करने के लिए की जरूरत के लिए सच में समझ में अपने दृष्टिकोण बनाने के लिए यह काम करते हैं. सबसे अच्छा तरीका जानने के लिए । :) वास्तव में खुश करने के लिए एक बेहतर दृष्टिकोण के लिए सामान्य रूप में से निपटने PSCustomObject के रूप में एक प्रकार की वापसी भी है.
Gordon

@गॉर्डन वहाँ हमेशा एक से अधिक रास्ते PowerShell के साथ.
Tomalak

बहुत ही सच है, कि. :)
Gordon

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में