Where子句没有正确过滤

时间:2015-12-17 16:13:35

标签: powershell

使用下面的脚本我试图过滤掉没有像Windows 10那样的$要求的应用程序。当我运行这个时,我仍然得到包含Windows 10的应用程序要求的返回结果。

 | 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 个答案:

答案 0 :(得分:1)

-Like运算符用于PowerShell中的WildCard搜索。因此,您需要在过滤器中的某处*

试试这个:

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