这个问题在这里已有答案:
我认为这是逃避某些角色的问题。
我有这个VBScript用于在没有窗口的情况下静默调用PowerShell命令(第3行):
Dim objShell
Set objShell=CreateObject("WScript.Shell")
strExpression="get-printer | Where-Object {$_.DriverName -notlike "*microsoft*"} | export-csv C:\SAAQ\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:\SAAQ\temp\printers.csv -encoding UTF8 -force"
它工作正常。
似乎是什么问题以及VBScript中用于“逃避”的字符是什么?
发现它,非常简单,双引号导致问题所以我只是在命令中使用单引号:
strExpression="get-printer | Where-Object {$_.DriverName -notlike '*microsoft*'} | export-csv C:\SAAQ\temp\printers.csv -encoding UTF8 -force"