解决scheme使用不同的凭据在Windows机器之间复制文件

我在一个可以在目标机器上运行脚本的Windows服务应用程序工作。 我需要做的一件事就是将文件从主机上复制到不同用户的目标机器上。 我已经探索了几个解决scheme,但还没有find一个好的。 我列出了所有我尝试过的。 如果有人有不同/更好的解决scheme,将不胜感激

  • start-bitstransfer:此服务在系统帐户下运行。 所以只有系统帐户下的服务才能使用它。
  • get-content / set-content:为目标build立一个pssession并使用会话中的set-content。 这种方法消耗大量的内存,需要时间。 对于1.02 MB文件,花了2分多钟。

    measure-command {$ 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,您可以在使用不同凭据映射networking驱动器后使用Copy-Item。 但是,您不能同时使用多个用户,这会影响自动化的目的使用New-PSDrive映射networking驱动器的问题

  • 运行一个networking服务器,并做一个http get / post。 这是最快和最可靠的,但我们将进入开放端口和防火墙问题。

Robocopy是最快的方法,使用Start-Process命令以不同的凭据启动Robocopy

  Start-Process -FilePath "$env:SystemRoot\system32\WindowsPowerShell\v1.0\powershell.exe" -ErrorAction SilentlyContinue -windowstyle hidden -Credential $credentials -ArgumentList ("-NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy ByPass",“Robocopy <command line options>”) 

我不知道为什么你需要将文件从计算机复制到另一台计算机每次使用不同的凭据? PowerShell中的这种技术应该可以工作,但是也许可以通过授予一个帐户正确访问这两个位置来更好地解决这个问题