如何在PowerShell中调用VBScript?正确语法求助
在PowerShell中调用VBScript的正确语法
推荐方法:直接调用脚本宿主执行
VBScript必须通过Windows脚本宿主(cscript.exe或wscript.exe)运行,这是最稳定的方式,直接写命令即可:
# 带控制台窗口执行(适合查看输出日志) cscript.exe "$SupAppsFolder\DCS Olympus_v1.0.4_manager\frontend\client.vbs" "$SavedGamesFolder\DCS\Config\olympus.json"
# 无控制台窗口执行(和双击VBS脚本的效果一致) wscript.exe "$SupAppsFolder\DCS Olympus_v1.0.4_manager\frontend\client.vbs" "$SavedGamesFolder\DCS\Config\olympus.json"
用Start-Process的正确写法
如果非要用Start-Process,注意参数传递的格式,不要把所有内容堆在一起:
方式1:参数数组传递(更清晰易维护)
Start-Process -FilePath "cscript.exe" -ArgumentList "$SupAppsFolder\DCS Olympus_v1.0.4_manager\frontend\client.vbs", "$SavedGamesFolder\DCS\Config\olympus.json"
方式2:引号包裹整体参数(适配复杂场景)
Start-Process -FilePath "cscript.exe" -ArgumentList "`"$SupAppsFolder\DCS Olympus_v1.0.4_manager\frontend\client.vbs`" `"$SavedGamesFolder\DCS\Config\olympus.json`""
- 替换
cscript.exe为wscript.exe就能隐藏控制台窗口;加-NoNewWindow参数可以让脚本在当前PowerShell窗口内执行(仅cscript支持)。
关于Invoke-Expression
这个命令安全性较差,若变量内容被篡改可能触发恶意代码执行,而且空格路径的解析容易出问题,不推荐使用。如果一定要尝试,正确写法是:
Invoke-Expression "cscript.exe `"$SupAppsFolder\DCS Olympus_v1.0.4_manager\frontend\client.vbs`" `"$SavedGamesFolder\DCS\Config\olympus.json`""
内容的提问来源于stack exchange,提问作者Sierra50
相关产品推荐
相关产品推荐

