我在一个可以在目标机器上运行脚本的 Windows 服务应用程序上工作。我需要做的一件事是将文件从我的主机复制到不同用户的目标机器。我已经探索了几种解决方案,但还没有找到一个好的解决方案。我列出了我尝试过的所有内容。如果有人有不同/更好的解决方案,将不胜感激
- start-bitstransfer:此服务在系统帐户下运行。所以只有系统帐户下的服务才能使用它。
get-content/set-content:建立到目标的 pssession 并在会话中使用 set-content。这种方法消耗大量内存并且需要时间。对于一个 1.02 MB 的文件,它花费了 2 多分钟。
测量命令{$outp = icm -Session $s -ScriptBlock {get-content C:\Programdata\karan\bigfile.txt}; $outp > bfile.txt}
TotalMinutes : 2.20191604 TotalSeconds : 132.1149624 TotalMilliseconds : 132114.9624
对于更大的文件,文件必须分块加载并复制,这可能需要更长的时间
使用 powershell 3.0,您可以在使用不同的凭据映射网络驱动器后使用 Copy-Item。但是您不能同时使用多个用户,这超出了自动化的目的 使用 New-PSDrive 映射网络驱动器的问题
- 运行网络服务器并执行 http get/post。这是最快和最可靠的,但我们将讨论开放端口和防火墙问题。