PowerShell WQL-запрос (SCCM), как вы фильтруете на двух ГДЕ? - PullRequest
0 голосов
/ 03 мая 2018

Будучи действительно новым для запросов WQL от SCCM через Powershell, я справился с этим до сих пор:

[string]$poste_entre = Read-Host "Poste"
[string]$poste_entre = $poste_entre.Insert(0,"%")
[string]$poste_entre += "%"
""


[string[]]$postes=(Get-WmiObject -ComputerName SSigcimpr001 -Namespace "root\sms\site_pr1" -Query ("select SMS_R_System.Name from  SMS_R_System WHERE SMS_R_System.Name like '" + $poste_entre + "' ")).Name


$postes

В этом случае я ввожу частичное имя (0293) и, добавляя% в начале и конце строки (подстановочный знак), запрос возвращает два компьютера, которые я ищу правильно:

Poste: 0293

A0293
P0293

Однако компьютер "A0293" является НЕАКТИВНЫМ компьютером, я хотел бы, чтобы запрос НЕ возвращал его, поэтому он возвращает только АКТИВНЫЕ компьютеры.

Я думал, что смогу сделать запрос следующим образом:

[string[]]$postes=(Get-WmiObject -ComputerName SSigcimpr001 -Namespace "root\sms\site_pr1" -Query ("select SMS_R_System.Name from  SMS_R_System WHERE SMS_R_System.Name like '" + $poste_entre + "' AND SMS_R_System.Active = '1' ")).Name

но он не работает, он все равно возвращает оба компьютера, но один явно неактивен? Почему запрос не возвращает только активный компьютер?

Спасибо большое! enter image description here

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Закончилось поиском ответа с помощью langstrom, окончательный запрос таков:

[string[]]$postes=(Get-WmiObject -ComputerName SSigcimpr001 -Namespace "root\sms\site_pr1" -Query ("select SMS_R_System.Name from  SMS_R_System  inner join SMS_G_System_CH_ClientSummary on SMS_G_System_CH_ClientSummary.ResourceId = SMS_R_System.ResourceId where SMS_G_System_CH_ClientSummary.ClientActiveStatus = 1 AND SMS_R_System.Name like '" + $poste_entre + "' ")).Name
0 голосов
/ 03 мая 2018

Возможные значения для SMS_R_System.Active: 0 или 1.

[string[]]$postes=(Get-WmiObject -ComputerName SSigcimpr001 -Namespace "root\sms\site_pr1" -Query ("select SMS_R_System.Name from SMS_R_System WHERE SMS_R_System.Name like '" + $poste_entre + "' AND SMS_R_System.Active = 1")).Name

Кстати, технически это WQL-запросов . Синтаксис похож на SQL, но в WQL есть некоторые тонкие различия, более ограничивающие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...