我有一个VBscript文件。我在Windows 2012服务器上使用CScript运行这个VBscript。 VBscript在服务器上运行良好。
但是我需要从Powershell调用这个VBScript文件。这就是我所做的。
为简单起见,这就是我在VBscript文件中的内容
echo.vbs
Msgbox("hello world")
我写了test.ps1
$acommand = "C:\Windows\System32\Cscript.exe C:\deleteit\echo.vbs"
Invoke-Expression $acommand
答案 0 :(得分:0)
这是运行外部应用程序的正确方法,如果您使用命令行exe或VBS脚本,则可以使用相同的技术。
就我个人而言,我希望将功能添加到PowerShell脚本而不是调用外部VBS脚本,但这只是我的2美分价值:)
答案 1 :(得分:0)
除了简单地运行
Cscript.exe C:\deleteit\echo.vbs //nologo
有一个com对象,可以将vbscript直接嵌入到powershell中,但仅32位。有一种方法可以将作业作为32位运行。
start-job {
$sc = New-Object -ComObject MSScriptControl.ScriptControl.1
$sc.Language = 'VBScript'
$sc.AddCode('
Function MyFunction(byval x)
MyFunction = 2 * x
End Function
')
$sc.codeobject.MyFunction(1)
$sc.codeobject.MyFunction(2)
} -runas32 | wait-job | receive-job
输出:
2
4