繁体   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