在vbscript中嵌入powershell

时间:2015-02-25 17:00:45

标签: powershell vbscript embed

我有一个PowerShell脚本,我使用.vbs文件调用。这减少了用户每次转到cmd的工作量,键入powershell然后调用.ps1文件。 vbs脚本直接在调用ps1文件的新cmd窗口中打开powershell。

VB脚本是:

Set objShell = CreateObject("Wscript.Shell")
objShell.Run("powershell.exe -noexit C:\Scripts\anydrive.ps1")

我现在想要实现的是,我可以将 .ps1 文件嵌入 .vbs文件中,以便我有一个.vbs文件,我可以将其传播到用户而不是2个单独的文件。

1 个答案:

答案 0 :(得分:3)

你可以做你想要的。最简单的方法是将其编码为base64字符串,也许是这样的(这是一次性的事情):

$script = Get-Content C:\Scripts\anydrive.ps1 -Raw
$bytes = [System.Text.Encoding]::Unicode.GetBytes($script)
$encoded = [Convert]::ToBase64String($bytes)
$encoded | clip  # copy it to the clipboard

然后将其粘贴到已编码的VBScript中。

您可以像这样调用powershell:

powershell.exe -NoExit -EncodedCommand $e

(在这种情况下$e是指编码的命令字符串或包含它的VBscript变量。)

但是,为什么?

如果您不希望用户必须打开PowerShell并手动加载文件,并且您想要双击它们,那么为什么不为它们创建快捷方式呢?快捷方式只是针对您从VBscript调用的完全相同的命令行。