如何将 powershell 中的 stdin 数据转储到文件?

如何将 powershell 中的 stdin 数据转储到文件?

我正在尝试通过 ssh 将 stdin 数据(文件/照片/视频等)从本地(linux/jailed iOS)转储到远程(Windows)。在本地和远程都是 linux 的正常情况下,此方法有效:

#! /bin/bash

dest="/var/some/dir"
mkdir $dest
cp /dev/stdin $dest/"name.ext"

但是现在我的远程环境更改为 Windows 10(ssh 进入 powershell),只需这样做就会转储损坏的文件并且我无法打开它:

$name="somefilename"
$dest="C:\somedir"
mkdir $dest
$input > "$dest\$name.ext"

我犯了什么错误?我该如何修复它?(scp不幸的是,类似的工具不适用于 Linux-Windows 设置,因为由于沙盒环境,我传递数据的唯一方式是通过 stdin - Siri Shortcuts)

答案1

我取得了一些成功

base64 < local-file | ssh remote-host '"$Input | Set-Content remote-file"'
  • 这将写入文件的 base64 编码版本因为很难阻止 powershell 尝试解码和重新编码输入并更改行尾等,但它可以对 base64 编码的数据执行所有这些操作,而不会破坏底层数据

  • 两级引号'"…"'有助于 powershell 将命令作为单个字符串获取

  • 这不会对大文件进行部分传输

相关内容