batch-file - 将 PowerShell 脚本转换为不可读的格式

标签 batch-file powershell powershell-2.0

我有一个 PowerShell 脚本,它在客户机器上安装补丁(包含要添加的文件集)。为此,我创建了一个执行此 PowerShell 脚本的批处理文件。
要让客户运行此批处理文件,还必须将 PowerShell 脚本文件放置到客户计算机上。

PowerShell 脚本为文本格式,便于客户阅读和理解。

我们可以将这个脚本文件转换成某种不可读的格式(例如 bin 或 exe),使客户无法读取它吗?

最佳答案

您可以将脚本转换为 Base64 编码,这样就不能立即读取。要将 PowerShell 脚本文件转换为 Base64 字符串,请运行以下命令:

$Base64 = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('c:\path\to\script file.ps1'));

要启动 Base64 编码的脚本,您可以调用 PowerShell.exe,如下所示:
powershell.exe -EncodedCommand <Base64String>

例如,以下命令:
powershell.exe -EncodedCommand VwByAGkAdABlAC0ASABvAHMAdAAgAC0ATwBiAGoAZQBjAHQAIAAiAEgAZQBsAGwAbwAsACAAdwBvAHIAbABkACEAIgA7AA==

将返回以下结果:
Hello, world!

关于batch-file - 将 PowerShell 脚本转换为不可读的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20943410/

相关文章:

windows - Windows Batch 上的最大变量数

python - powershell 运行 pip

powershell - 我/我需要如何处置自定义PSObject?

powershell - 如何使用凭据测试写入文件共享路径?

powershell - 这可以在远程计算机上工作吗?

email - 在Powershell中使用电子邮件正文创建.bat文件

c# - 从 C# 权限问题执行批处理文件

batch-file - 通过批处理从 csv 文件中删除一些列和行

powershell - 在注册表子项中查找值并删除它们

azure - Set-AzureRmResource 抛出 api 版本错误