Object-객체를 사용하여 레지스트리에서 여러 항목을 필터링하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/25021345

문제

where-object를 사용하여 레지스트리에서 항목을 거의 없애려고합니다. 필터링 한 항목 만 있지만 여러 항목은 ... 내 스크립트에 문제가 있습니까?

코드는 단 하나의 항목

에만 잘 작동합니다

Get-ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ |  
ForEach-Object {Get-ItemProperty $_.pspath} |
Where-Object {
$_.Displayname -like 'adobe air'
} |
Select-Object DisplayName,DisplayVersion |
Sort-Object DisplayName |
Out-GridView
.

그러나 여러 항목을 필터링하도록 설정하면 결과없이 실행되거나 끝나지 않아도됩니다. 왜 어떤 아이디어 왜?

Get-ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ |  
ForEach-Object {Get-ItemProperty $_.pspath} |
Where-Object {
$_.Displayname -like 'adobe air' -and
$_.Displayname -like 'Java*' -and
$_.Displayname -like 'TeamViewer*'
} |
Select-Object DisplayName,DisplayVersion |
Sort-Object DisplayName |
Out-GridView
.

를 사용하면

Where-Object {
$_.Displayname -like "Security*"
}
.

그것은 단지 3 가지 항목이 Security와 일치하는 것입니다. 왜 그 중 하나가 아닌 이유는 무엇입니까?

도움이 되었습니까?

해결책

문제는 입력 한 논리입니다. -and는 모두 true가 필요합니다. 대신 -or를 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top