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

标签 windows powershell-3.0 copy-item

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

  • start-bitstransfer:此服务在系统帐户下运行。所以只有系统账号下的服务可以使用。
  • get-content/set-content:建立到目标的 pssession 并在 session 中使用 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。这是最快和最可靠的,但我们将进入开放端口和防火墙问题。

最佳答案

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

关于windows - 使用不同凭据在windows机器之间复制文件的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30147305/

相关文章:

powershell - 复制项目不一致的行为?

ios - swift 3 : Error in copying file with FileManager

c++ - 如何用C++控制TabTip键盘的显示和关闭

php - MemcachePool::get():服务器本地主机(tcp 11211,udp 0)失败:网络超时

windows - 访问图像的 Windows 'tags' 元数据字段

java - 如何创建此自定义 View

powershell - 如何合并记录匹配 1 列的两个 csv 文件中的所有内容

powershell - 试图用 ";"替换变量中的字符串

iis - 如何从 PowerShell 指定应用程序池身份用户和密码

powershell - 如何直接通过管道传输到 Copy-Item 而不是在 ForEach-Object 中