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

如何在PowerShell中通过文件内容复制图片(远程场景)

实现将图片内容存入变量并远程生成相同图片的方案

需求可行性确认

完全可行。通过将图片文件读取为字节数组,可跨PowerShell会话传递,再在目标机器上写入字节数组还原文件,比逐台传输文件更高效。

本地测试正确操作

你之前的问题出在读取和写入时的参数搭配错误,正确的本地操作步骤:

  1. 读取图片为完整字节数组(加-Raw避免将文件分割为多行字节集合):
$PhotoContent = Get-Content -Path "C:\Temp\photo_orig.jpg" -AsByteStream -Raw
  1. 写入字节数组生成图片:
Set-Content -Path "C:\Temp\photo_duplicate.jpg" -Value $PhotoContent -AsByteStream

执行后生成的photo_duplicate.jpg与原文件完全一致。

远程部署脚本示例

通过Invoke-Command将字节数组传递给多台远程机器,在目标机器上生成文件:

# 1. 读取本地图片字节数组
$PhotoContent = Get-Content -Path "C:\Temp\photo_orig.jpg" -AsByteStream -Raw

# 2. 定义远程服务器列表
$remoteServers = @("Server01", "Server02", "Server03")

# 3. 远程执行生成图片
Invoke-Command -ComputerName $remoteServers -ScriptBlock {
    param($ImageBytes, $TargetPath)
    # 确保目标目录存在
    $targetDir = Split-Path $TargetPath -Parent
    if (-not (Test-Path $targetDir)) {
        New-Item -Path $targetDir -ItemType Directory -Force | Out-Null
    }
    # 写入字节数组生成图片
    Set-Content -Path $TargetPath -Value $ImageBytes -AsByteStream
} -ArgumentList $PhotoContent, "C:\RemoteDeploy\photo_copy.jpg"

错误原因分析

  • 第一次Set-Content未加-AsByteStream:PowerShell会将字节数组当作字符串处理,导致内容丢失,生成0KB文件。
  • 第二次报错:若未加-Raw,Get-Content会返回多行字节数组组成的集合,而非单个完整字节数组,Set-Content -AsByteStream无法处理该类型。
  • -Encoding byte参数无效:PowerShell的-Encoding参数不支持byte,读取二进制文件需用-AsByteStream参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:35:15