我有一些使用WMI查询的代码,但我遇到的问题是我使用的变量有'(单引号),导致代码出现故障
以下是一个例子:
$path = "\\SERVER1\Mike O'Leary$"
$servername = $path.Split('\')[2].Split('\')[0]
$sharename = $path -replace ".*\\" -replace "'", "`'"
Get-WmiObject Win32_share -computer $servername -filter "name='$sharename'" | Select Name,Path
问题是共享名称包含'字符,因此它会出错。没有“正常工作”的路径
我尝试使用上面看到的替换,但这没有帮助
我尝试了各种报价组合,但我无法做到正确,有人可以提供帮助吗?
由于 本
答案 0 :(得分:2)
您需要在WQL中转义该字符。触及这个的blog表示你可以用反斜杠来逃避它。
$sharename = $path -replace ".*\\" -replace "'", "\'"
答案 1 :(得分:1)
哎呀,事实证明我应该使用\而不是`
$path = "\\SERVER1\Mike O'Leary$"
$servername = $path.Split('\')[2].Split('\')[0]
$sharename = $path -replace ".*\\" -replace "'", "\'"
Get-WmiObject Win32_share -computer $servername -filter "name='$sharename'" | Select Name,Path
神秘解决了!
答案 2 :(得分:1)
在过滤字符串中使用双引号而不是单引号:
Get-WmiObject Win32_Share -Computer $servername -Filter "name=`"$sharename`"" | ...
嵌套的双引号必须带有反引号,以便在双引号过滤字符串中对它们进行转义。