簡體   English   中英

WMI / WQL查詢powershell中的雙反斜杠

[英]double backslash in WMI/WQL query powershell

我的WQL查詢面臨着奇怪的問題。

$SCCMQuery = @'
Select UAR.User, UAR.Application, UAR.CurrentState from sms_fullcollectionmembership as FCM
INNER JOIN SMS_UserApplicationRequest as UAR ON UAR.User=FCM.SMSID
where FCM.CollectionID="a\100104"
'@
$Results = Get-WmiObject -Namespace "root\SMS\Site_Name" -Query $SCCMQuery

上面的查詢不能正常工作但是當我在FCM.CollectionID添加另一個反斜杠時( a\\\\100104 )然后它開始工作。

有人可以告訴我為什么它這樣工作? 我無法手動將反斜杠放在所有值中,因為它們稍后將從其他WMI查詢生成。

如果你看看about_wql,你會看到

WQL使用反斜杠()作為轉義字符。 這與使用反引號字符(`)的Windows PowerShell不同。

在生成的查詢中,如果需要,您可以通過簡單替換人為地添加斜杠。

$SCCMQuery.replace("\","\\")

我確信$SCCMQuery只是一個測試示例,但查詢必須放在某處的代碼中。

即使\\只是PowerShell中的文字字符,它仍然是WQL中的轉義字符

規格

WQL使用[DMTF-DSP0004]中規定的術語和概念,除非如下所述,並且需要熟悉CIM模型。 除了在LIKE子句中之外,服務器必須將反斜杠視為WQL查詢中的轉義字符 服務器必須將WQL數據中的文字字符串視為不區分大小寫,與[DMTF-DSP0004]指定的相反。

使用可以使用-replace運算符來轉義反斜杠(請注意, -replace的第一個參數是一個正則表達式模式,它也將反斜杠視為轉義字符):

$escapedWmiQueryValue = $WmiQueryValue -replace '\\','\\'

暫無
暫無

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

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