变量上的 PowerShell WMI 筛选器
PowerShell WMI filter on variable
这不是我想要完成的确切场景,但却是我遇到困难的一个很好的例子。
$Path = "\192.168.1.1\config"
Get-CimInstance -Namespace ROOT\CIMV2 -ClassName Win32_MappedLogicalDisk -Filter "ProviderName=$Path"
这会产生“无效查询”错误,因为它试图在查询中使用 \
我知道我可以使用以下方法手动执行此操作:
Get-CimInstance -Namespace ROOT\CIMV2 -ClassName Win32_MappedLogicalDisk -Filter "ProviderName='`\`\192.168.1.1`\config'"
这不能解决我的问题,因为我需要从变量传递值
如有任何帮助,我们将不胜感激
您可以进行内联替换以转义反斜杠:
$Path = "\192.168.1.1\config"
Get-CimInstance -Namespace ROOT\CIMV2 -ClassName Win32_MappedLogicalDisk -Filter "ProviderName='$($Path -replace '\','\')'"
注意:不要忘记在过滤器的值部分加上单引号。
$()
是子表达式 operator。由于 -replace
使用正则表达式,因此还必须为匹配表达式转义单个 \
。
这不是我想要完成的确切场景,但却是我遇到困难的一个很好的例子。
$Path = "\192.168.1.1\config"
Get-CimInstance -Namespace ROOT\CIMV2 -ClassName Win32_MappedLogicalDisk -Filter "ProviderName=$Path"
这会产生“无效查询”错误,因为它试图在查询中使用 \
我知道我可以使用以下方法手动执行此操作:
Get-CimInstance -Namespace ROOT\CIMV2 -ClassName Win32_MappedLogicalDisk -Filter "ProviderName='`\`\192.168.1.1`\config'"
这不能解决我的问题,因为我需要从变量传递值
如有任何帮助,我们将不胜感激
您可以进行内联替换以转义反斜杠:
$Path = "\192.168.1.1\config"
Get-CimInstance -Namespace ROOT\CIMV2 -ClassName Win32_MappedLogicalDisk -Filter "ProviderName='$($Path -replace '\','\')'"
注意:不要忘记在过滤器的值部分加上单引号。
$()
是子表达式 operator。由于 -replace
使用正则表达式,因此还必须为匹配表达式转义单个 \
。