2015-12-17 2 views
0

Используя нижеприведенный скрипт, я пытаюсь отфильтровать приложения, которые не имеют требования $, например Windows 10. Когда я запускаю это, я все еще получаю результаты с требованиями приложения, содержащими окна 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

Ну, как значения свойств похожи, что вы хотели бы, чтобы отфильтровать? Условие, которое у вас есть, такое же, как и с использованием '-ne '...' ', поэтому, я думаю, вы хотели использовать« -неподобно »по какой-то причине, но не могли получить правильный шаблон. – Joey

+0

Я хотел бы просто вернуть приложения, где у них нет требования к Windows10. Кажется, что любая фильтрация, которую я делаю, не работает – user1342164

ответ

1

Оператор -Like используется для поиска WildCard в PowerShell. Поэтому вам нужен * где-нибудь в вашем фильтре.

Попробуйте это:

| 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

Смежные вопросы