VBScript调用powershell,转义字符[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBScript调用powershell,转义字符[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我认为这是逃避某些角色的问题。

我有这个VBScript用于在没有窗口的情况下静默调用PowerShell命令(第3行):

Dim objShell
Set objShell=CreateObject("WScript.Shell")
strExpression="get-printer | Where-Object {$_.DriverName -notlike "*microsoft*"} | export-csv C:SAAQ	empprinters.csv -encoding UTF8 -force"
strCMD="powershell -sta -noProfile -NonInteractive -executionpolicy Bypass  -nologo -command " & Chr(34) &_
"&{" & strExpression &"}" & Chr(34) 
objShell.Run strCMD,0

这给了我这个错误:

Erreur:类型不兼容:'[string:“get-printer | Where-”]' 代码:800A000D

如果我删除Where-Object并且只是执行:

strExpression="get-printer | export-csv C:SAAQ	empprinters.csv -encoding UTF8 -force"

它工作正常。

似乎是什么问题以及VBScript中用于“逃避”的字符是什么?

答案

发现它,非常简单,双引号导致问题所以我只是在命令中使用单引号:

strExpression="get-printer | Where-Object {$_.DriverName -notlike '*microsoft*'} | export-csv C:SAAQ	empprinters.csv -encoding UTF8 -force"

以上是关于VBScript调用powershell,转义字符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

powershell 使用PowerShell转义URI字符串

powershell 使用PowerShell转义URI字符串

如何从PowerShell命令行转义管道字符以传递到非PowerShell命令

如何在 vbscript 中使用字符串变量作为 telnet 命令?

命令行转义PowerShell的单引号

(20)Powershell中的特殊运算符