VBScript调用powershell,转义字符

时间:2018-11-05 15:20:01

标签: powershell vbscript escaping

我认为这是转义某些字符的问题。

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

Dim objShell
Set objShell=CreateObject("WScript.Shell")
strExpression="get-printer | Where-Object {$_.DriverName -notlike "*microsoft*"} | export-csv C:\x\temp\printers.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:\x\temp\printers.csv -encoding UTF8 -force"

它工作正常。

似乎是问题所在,VBScript中用于“转义”的字符是什么?

1 个答案:

答案 0 :(得分:0)

发现它,很简单,双引号引起了问题,所以我只在命令中使用了单引号:

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