我有一个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个单独的文件。
答案 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调用的完全相同的命令行。