从PowerShell脚本创建可执行的.exe文件?

LaP*_*Phi 31 powershell executable

是否可以从PowerShell脚本创建可执行的.exe文件?

Jay*_*kul 19

没有.至少,还没有,在5个版本的PowerShell之后,它似乎不太可能.

我希望我可以放弃它,但其他人提供了一堆"解决方法"类型的答案,我觉得有必要解决:

可以将.ps1脚本包装在另一个脚本类型中以使其可双击,甚至可以生成嵌入了脚本的可执行文件(请参阅此线程上的其他答案)......但这些"可执行文件"需要正确的版本 PowerShell已经存在于系统中,所以你没有通过这样做获得任何东西,并且你失去了PowerShell的许多功能(如流对象输出,帮助文档和自动参数处理以及用户的标签完成) .

这是一个简单的.cmd批处理文件包装器(您可以扩展它以允许参数):

REM <#
copy %0 %0.ps1
PowerShell.exe -ExecutionPolicy Unrestricted -NoProfile -Command "&{Set-Alias REM Write-Host; .\%0.ps1}"
del %0.ps1
exit
REM #>

### Your PowerShell script goes below here.
### I've put a couple of lines as an example ...
ls | sort length -desc | select -first 5 | ft
ps | sort ws -desc | select -first 10 | ft
Run Code Online (Sandbox Code Playgroud)

我知道 ...

使用Portable PowerShell,可能会打包一种包含正确版本的PowerShell和脚本的自解压zip,并且可以正常工作.这不是任何正常意义上的可执行文件 - 这有点像Valve是否已经决定只将拇指驱动器上的vmware映像作为让Linux用户玩半条命的解决方案.但是,该产品似乎已被抛弃.

使用PrimalScript(或PowerShell Studio)或PowerGuipShellExec,您的脚本可以加密,因此它可以防止窥探......但这基本上只是混淆,基本上与批处理文件没有什么不同,在某些方面更糟糕.


Kei*_*ill 8

开箱即用 - 没有.但是我已经构建了一个PowerShell脚本,可以获取脚本并在其周围创建一个EXE包装器.我不久前创建了这个脚本,但决定在这里发布博客供大家查看.


小智 7

使用PowerGUI的脚本编辑器(它是免费的并且有效).在PowerGUI脚本编辑器>工具>编译脚本中打开脚本>选择您想要的.exe选项(密码保护源代码,在.exe运行后自动关闭控制台等).


Sma*_*tis 7

是的,PS2EXE有一个选项来创建这样的*.exe文件.

用法

整个过程非常简单,但很好地解释了这里是一个片段:

C:\Scripts\PS2EXE\PS2EXE_0.5.0.0.0\ps2exe.ps1 
    -inputFile  C:\Scripts\ExampleEXE\example.ps1 
    -outputFile C:\Scripts\ExampleEXE\example.exe -sta -noConsole -runtime40 -verbose -x64
Run Code Online (Sandbox Code Playgroud)

唯一不好的是该项目已经折旧.自2015年以来没有更新或新版本.

编辑:这个预计已被接收,现在由一个新人维持.您可以在此处找到更新后的代码,上次更新时间为01/04/2018. https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5


版本信息

要添加和编辑版本信息,请使用类似VERPATCH的内容.


更新2019年

喊出一个名为PythonEXE的git-repo .

它演示了如何从Python项目创建可执行文件,还提供了YouTube循序渐进指南.

  • 我确实尝试了这个,但它一直说着未知的POWERSHELL版本. (3认同)

sny*_*rgd 6

我将您的问题理解为“我的 PowerShell 脚本可以生成可执行文件吗?” 当我发现这篇文章时,这就是我想要做的。这可以使用 Add-Type 命令实现。

Add-Type -TypeDefinition @"
    using System;
    class Program {
        public static void Main(string[] args) { 
            Console.WriteLine("Hello World!");
        }
    }
"@ -CompilerParameters @{
    "GenerateExecutable" = $true
    "OutputAssembly" = "test2.exe"
}
Run Code Online (Sandbox Code Playgroud)


Cha*_*ler 2

SapienPrimalScript将从 PowerShell 脚本生成 exe。运行可执行文件的计算机必须安装 PowerShell。