2015-12-17 113 views
0

使用下面的腳本我試圖過濾掉沒有像Windows 10那樣的$需求的應用程序。當我運行這個時,我仍然得到包含Windows 10的應用程序需求的返回結果。Where子句沒有正確過濾

| Where { $_ -notlike 'All_x64_Windows_10_and_higher_Clients' }; 

任何想法我在做什麼錯在這裏?上面這行可能存在問題?

$warningpreference = "SilentlyContinue" 
Get-Content C:\temp\Applications.txt | foreach-object { 
$app = Get-CMApplication -Name "$_"; 
[XML]$appXML =$app.SDMPackageXML; 
$Requirement = $appXML.AppMgmtDigest.DeploymentType.Requirements.Rule.OperatingSystemExpression.Operands.RuleExpression.RuleID | Where { $_ -notlike 'All_x64_Windows_10_and_higher_Clients' }; 
If ($Requirement -ne $null -or $Requirement.length -gt 0) { 

Write-output "Application Name: $_ | Requirement: $Requirement " 
} 
} 
+1

好了,怎麼辦屬性值的樣子,你想過濾掉?你在那裏的條件和使用'-ne'...''一樣,所以我想你想用'-notlike'出於某種原因,但是無法得到正確的模式。 – Joey

+0

我想只返回他們沒有Windows10需求的應用程序。好像任何過濾我做的是不工作 – user1342164

回答

1

類似運算符用於PowerShell中的WildCard搜索。所以你需要一個*在你的過濾器的某個地方。

試試這個:

| Where { $_ -notlike "*All_x64_Windows_10_and_higher_Clients*" }; 
+0

謝謝我試過這個,它只是從輸出中取出All_x64_Windows_10_and_higher_Clients,並仍然顯示具有此要求的應用程序 – user1342164

+0

然後你究竟在做什麼?您的命令行表示刪除客戶端,如「* All_x64_Windows_10_and_higher_Clients *」 – FoxDeploy