簡體   English   中英

Powershell WQL查詢(SCCM)如何在兩個WHERE上進行過濾?

[英]Powershell WQL query (SCCM) how do you filter on two WHERE?

通過Powershell從SCCM進行WQL查詢真的很新,到目前為止,我已經做到了:

[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

但是它不起作用,它仍然返回兩台計算機,但是其中一台顯然是不活動的? 為什么查詢不只返回活動計算機?

非常感謝! 在此處輸入圖片說明

SMS_R_System.Active的可能值為01

[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中受到更多限制。

最終在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM