将多个PowerShell脚本转换为Exe文件

时间:2019-12-11 12:09:19

标签: powershell powershell-2.0 azure-powershell

我的命令中没有几个Powershell脚本。 我可以将Powershell脚本转换为一个exe文件吗?我需要将其设置为按顺序运行。例如,使用第一个脚本安装后,需要先安装第二个脚本,然后再安装3、4、5个脚本。

1 个答案:

答案 0 :(得分:1)

在最简单的情况下,您可以使用以下方法将脚本合并到单个脚本中,然后将其打包为可执行文件:

$scripts = 'script1.ps1', 'script2.ps1', 'script3.ps1'
(Get-Item $scripts | ForEach-Object { 
  "& {{`n{0}`n}}" -f (Get-Content -Raw $_.FullName) 
}) -join "`n`n" > 'combined.ps1'

请注意,这是一种简单但可扩展的方法:按照书面规定,不支持参数,也没有错误处理:原始脚本的各个内容仅按顺序执行(&),如下所示:脚本块({ ... })。

您可以使用PS2EXE-GUI项目的combined.ps1 将组合的脚本combined.exe编译为可执行文件,例如ps2exe.ps1,如下所示:脚本(流行的原始但过时的PS2EXE项目的更新版本和功能更全面的版本)。

# Create a PSv2-compatible executable.
# Omit -runtime20 to create an executable for the same PowerShell version
# that runs the script.
ps2exe -inputFile combined.ps1 -outputFile combined.exe -runtime20

注意事项:通常,运行生成的可执行文件需要在执行计算机上安装PowerShell,但由于要定位-runtime20 -努力成为v2 -compatible- .NET Framework 2.0 CLR也必须安装(请注意,它也随.NET Framework 3.5 一起提供),在最新版本中默认不再适用Windows。