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

时间:2015-05-10 03:08:35

标签: windows powershell-v3.0 copy-item

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

  • start-bitstransfer:此服务在系统帐户下运行。因此,只有系统帐户下的服务才能使用它。
  • get-content / set-content:为目标建立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,您可以在使用不同凭据映射网络驱动器后使用Copy-Item。但是你不能同时使用多个用户,这超出了自动化的目的 Issue with mapping network drives using New-PSDrive

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

1 个答案:

答案 0 :(得分:0)

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中的这种技术应该可行,但可以通过授予单个帐户对两个位置的正确访问权来更好地解决