다.
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]"))}
그러나지 않기 때문에 작동하면 당신은 실제로는 진짜 속성이,그들은 더 이상.NET 유형,그들은 끄집어 냈 냐 하로 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:
.