在 vbscript 中嵌入 powershell

Embedding powershell within vbscript

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

VB 脚本是:

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

我现在想实现的是,我能不能把.ps1文件嵌入到.vbs文件里面,这样我有一个 .vbs 文件,我可以将其分发给用户,而不是有 2 个单独的文件。

你可以按照你的要求去做。最简单的方法是将其编码为 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 调用的完全相同的命令行。