使用PS2EXE将PowerShell脚本编译为可执行程序

关于PS2EXE
PS2EXE是一个可以将PowerShell脚本编译为可执行程序的模块,在GUI和Ingo Karstein脚本的支持下,该模块能够生成真正的Windows可执行程序。除此之外,PS2EXE还支持PowerShell 5.x和图形化前端。

注意事项
有一些人可能会滥用PS2EXE来编译他的计算机病毒脚本,因此越来越多的病毒扫描程序会将使用PS2EXE创建的程序识别为恶意程序并将其删除。因此,希望大家不要将其用于恶意目的。

工具安装
首先,我们需要使用下列命令将该项目源码克隆至本地:
git clone https://github.com/MScholtes/PS2EXE.git
接下来,运行下列命令安装PS2EXE:
PS C:> Install-Module ps2exe

工具使用
Invoke-ps2exe .\source.ps1 .\target.exe

ps2exe .\source.ps1 .\target.exe
上述命令会将“source.ps1”编译成可执行程序target.exe,如果命令参数中忽略了“.\target.exe”的话,生成的文件将为“.\source.exe”。
或者,我们也可以启动Win-PS2EXE来开启图形化前端:
Win-PS2EXE
支持的参数
ps2exe [-inputFile] ‘<file_name>’ [[-outputFile] ‘<file_name>’] [-prepareDebug]
[-x86|-x64] [-lcid ] [-STA|-MTA] [-noConsole] [-UNICODEEncoding]
[-credentialGUI] [-iconFile ‘’] [-title ‘’] [-description ‘’]<br/> [-company ‘’] [-product ‘’] [-copyright ‘’] [-trademark ‘’]<br/> [-version ‘’] [-configFile] [-noOutput] [-noError] [-noVisualStyles] [-requireAdmin]<br/> [-supportOS] [-virtualize] [-longPaths]

参数解释
inputFile = 你需要转换为可执行程序的PowerShell脚本(文件需要是UTF8或UTF16编码)
outputFile = 目标可执行文件名称或目录
prepareDebug = 创建调试帮助信息
x86或x64 = 编译运行时32位或64位代码
lcid = 编译可执行程序的位置ID
STA或MTA = 单线程模式或多线程模式
noConsole = 生成的可执行文件为Windows应用程序,不带终端窗口
UNICODEEncoding = 将输入编码为UNICODE(终端模式)
credentialGUI = 使用GUI弹出凭证窗口(终端模式)
iconFile = 编译可执行文件的图标文件名
title = 标题信息
description = 描述信息
company = 公司信息
product = 产品信息
copyright = 版权信息
trademark = 商标信息
version = 版本信息
configFile = 编写配置文件(.exe.config)
noOutput = 生成可执行文件,不带标准输出
noError = 生成可执行文件,不带错误输出
noVisualStyles = 禁用Windows GUI应用程序的可视化风格
requireAdmin = 如果启用的UAC,编译的可执行文件只会在提权上下文中执行
supportOS = 使用最新Windows版本的功能
virtualize = 激活应用程序虚拟化
longPaths = 启用长路径支持

项目地址
PS2EXE:https://github.com/MScholtes/PS2EXE

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误提示说明 `Invoke-PS2EXE` 命令中没有找到名为 "Script" 的参数。这可能是因为你使用的是旧版本的 `PS2EXE` 模块,或者你的 PowerShell 环境中没有正确加载该模块。 为了解决这个问题,你可以尝试使用 `PS2EXECore` 工具来编译脚本为可执行文件。以下是使用 `PS2EXECore` 的步骤: 1. 首先,确保你的计算机上已安装了 PowerShell Core 6 或更高版本。你可以从 PowerShell 的官方网站上下载并安装最新版本:https://github.com/PowerShell/PowerShell 2. 打开 PowerShell Core 并运行以下命令安装 `PS2EXECore` 模块: ```powershell Install-Module -Name PS2EXECore -AllowPrerelease ``` 3. 使用以下代码创建一个新的 PowerShell 脚本文件(例如,`重启wacom.ps1`),并将以下代码复制粘贴进去: ```powershell param( [string]$serviceName = "WTabletServicePro" ) # 检查服务是否存在 if (Get-Service -Name $serviceName -ErrorAction SilentlyContinue) { # 重启服务 Restart-Service -Name $serviceName Write-Host "服务已成功重启。" } else { Write-Host "找不到指定的服务。" } # 按任意键退出脚本 Write-Host "`n请按任意键退出脚本..." $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") ``` 4. 将 `"WTabletServicePro"` 替换为你要重启的服务的实际名称。 5. 在 PowerShell Core 中运行以下命令编译脚本为可执行文件: ```powershell Invoke-PS2EXECore -InputFile .\重启wacom.ps1 -OutputFile 重启wacom.exe -Apartment STA -TargetFramework 'net5.0' ``` 确保将 `"重启wacom.ps1"` 替换为你创建的脚本文件名。这将生成一个名为 `重启wacom.exe` 的可执行文件。 现在,你可以双击 `重启wacom.exe` 来重启服务,而无需打开 PowerShell。如果你希望修改服务名称或其他参数,只需编辑脚本文件并重新编译为可执行文件即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值