Object-객체를 사용하여 레지스트리에서 여러 항목을 필터링하는 방법은 무엇입니까?
-
21-12-2019 - |
문제
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
를 사용하십시오.
제휴하지 않습니다 StackOverflow