You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell和Base64制作嵌入tar文件的自解压脚本

PowerShell自解压嵌入tar文件实现方案

实现原理

将本地tar文件转为Base64字符串后直接硬编码到PowerShell脚本中,脚本执行时自动解码Base64内容并写回为原始tar文件,完全适配Invoke-Command远程执行传输非PowerShell文件的场景。

第一步:生成本地自解压脚本

在你本地的PowerShell环境执行以下代码,即可将指定tar文件打包生成自解压脚本selfextracting.ps1:

# 按需修改以下三个参数为你的实际配置
$localTarPath = "./myfiles.tar"
$outputScriptPath = "./selfextracting.ps1"
$remoteTargetDir = "C:/User/dude/mystuff"

$tarFileName = Split-Path $localTarPath -Leaf
# 读取tar文件并转为Base64编码
$tarBytes = [System.IO.File]::ReadAllBytes((Resolve-Path $localTarPath).Path)
$base64TarContent = [System.Convert]::ToBase64String($tarBytes)

# 构造自解压脚本核心逻辑
$selfExtractScriptContent = @"
`$targetDir = "$remoteTargetDir"
`$tarFileName = "$tarFileName"
`$embeddedBase64 = @"
$base64TarContent
"@

# 输出内容完全匹配要求的效果
`$scriptName = `$MyInvocation.MyCommand.Name
`$currentHost = `$env:COMPUTERNAME
Write-Host "Now running ./`$scriptName on `$currentHost."
Write-Host "Powershell script is self-extracting ``$tarFileName`` embedded inside the script ./`$scriptName into the remote directory `$targetDir:"

# 自动创建目标目录
if (-not (Test-Path `$targetDir)) {
    New-Item -ItemType Directory -Path `$targetDir -Force | Out-Null
}

# 解码Base64还原tar文件
`$tarBytes = [System.Convert]::FromBase64String(`$embeddedBase64)
`$outputTarFullPath = Join-Path `$targetDir `$tarFileName
[System.IO.File]::WriteAllBytes(`$outputTarFullPath, `$tarBytes)

Write-Host "....."
Write-Host "....."
Write-Host "...."
Write-Host "...."
Write-Host "done."
"@

# 输出最终的自解压脚本
Set-Content -Path $outputScriptPath -Value $selfExtractScriptContent -Encoding UTF8

第二步:远程执行脚本

直接使用你给出的调用方式即可完成远程传输还原:

invoke-command -FilePath ./selfextracting.ps1 -Computer remotecomputer

补充说明

  • 单文件大小在10GB以内都可以正常使用该方案,PowerShell对Base64字符串长度没有严格的硬上限
  • 如果需要执行完自动解压tar,可以在自解压脚本末尾追加tar -xf $outputTarFullPath -C $targetDir命令,Win10 1809及以上、Win11系统默认自带tar命令
  • 如果远程机器有权限限制,可自行在脚本开头添加对应权限申请逻辑

内容的提问来源于stack exchange,提问作者pico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:09:03