gpt4 book ai didi

powershell - 在 PowerShell 脚本中嵌入 VBScript - 一个文件

转载 作者:行者123 更新时间:2023-12-02 23:17:05 28 4
gpt4 key购买 nike

我最近在处理批处理 + VBScript 混合脚本方面学到了很多东西,虽然学习效果很好,但现在是时候更彻底地学习 PowerShell 了。但是,我最喜欢 Batch/VBScript 解决方案的部分是我可以创建单个 script.cmd 文件来分发。

PowerShell/VBScript 有什么解决方案吗?理想情况下,我认为我更喜欢带有嵌入式 VBScript 的 .ps1 脚本,但有兴趣了解我的选择。

目标似乎有些困惑。

  • 一个文件(这是最重要的部分)
  • 扩展名 .ps1.vbs
  • POWERSHELLVBScript 都在一个文件中
  • 奖金:
    • 不写入外部文件
    • 每行开头
    • 必须在代码中转义特殊字符
    • 对脚本的整个部分进行编码(开销 CPU 密集型操作)

这是一个理论性的例子:

脚本。{ps1/vbs}:

<!-- : Begin PS1 script
$strString = "Hello PowerShell"
write-host $strString

cscript //nologo "%~f0?.wsf" //job:HELLOWORLD
exit /b
PAUSE
----- Begin wsf script --->
<package>
<job id="HELLOWORLD">
<script language="VBScript">
MsgBox "Hello World VBS"
</script>
</job>
<job id="VBS">
<script language="VBScript">
'Second Script!
</script>
</job>
</package>

像这样 -->

https://stackoverflow.com/a/9074483/5079799

<!-- : Begin batch script
@ECHO OFF
CLS

cscript //nologo "%~f0?.wsf" //job:HELLOWORLD
exit /b
PAUSE
----- Begin wsf script --->
<package>
<job id="HELLOWORLD">
<script language="VBScript">
MsgBox "Hello World"
</script>
</job>
<job id="VBS">
<script language="VBScript">
'Second Script!
</script>
</job>
</package>

最佳答案

照常创建 VBS 脚本。保存在某个位置,然后将其转换为 Base64。使用字节编码,因此这也适用于二进制文件,并克服了字符编码问题。像这样,

$Content = Get-Content -Path C:\temp\myScript.vbs -Encoding Byte
$Base64 = [System.Convert]::ToBase64String($Content)
$Base64 | Out-File c:\temp\myScript.b64

然后,在您的 Powershell 脚本中,包含 VBS 脚本的编码版本。将 Base64 转换回字符串并将其写入文件。最后调用cscript运行.vbs

$Base64 = "ZgB1AG4AYwB0AGkAbwBuACAAR..."
$Content = [System.Convert]::FromBase64String($Base64)
Set-Content -Path $env:temp\myScript.vbs -Value $Content -Encoding Byte

& cscript /nologo $env:temp\myScript.vbs

另一种选择是像这样将 VBScript 嵌入到 here-string 中,

# Paste the VBS in a here string
$Content = @'
dim foo
...
'@
Set-Content -Path $env:temp\myScript.vbs -Value $Content
& cscript /nologo $env:temp\myScript.vbs

关于powershell - 在 PowerShell 脚本中嵌入 VBScript - 一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63514534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com