从Powershell调用VBScript ..这是正确的方法吗?

时间:2017-10-06 03:36:29

标签: powershell vbscript

我有一个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

2 个答案:

答案 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