【问题标题】:Want to wait till copy complete using Powershell Copy-Item想要等到使用 Powershell Copy-Item 完成复制
【发布时间】:2012-08-26 00:32:56
【问题描述】:

我正在使用 Powershell 脚本中的 Copy-Item 将文件从一台 Windows 机器复制到另一台机器。

但我想等到复制完成,Powershell Copy-Item 是非阻塞调用方式,它只是触发复制并返回脚本但是我想等到复制完成。

有什么办法吗?

【问题讨论】:

  • 这完全是错误的。 Copy-Item 确实会阻塞。这可能应该关闭。
  • 复制项是非阻塞的。如果我触发复制项命令并立即检查路径是否存在,它会返回 false

标签: powershell copy-item


【解决方案1】:

Copy-Item 确实阻塞了。 我刚刚将一个 4.2GB 的文件从我们千兆网络上的共享中复制到我的本地计算机上。我的 PowerShell 提示挂起,几分钟后没有返回。

【讨论】:

  • 这是不对的。如果项目足够小以适合缓存,则复制项目不会阻塞。此外,如果您使用多个复制项命令一个接一个地复制多个大文件,即使是比可用缓存大得多的文件,在第一个文件的末尾,一旦有足够的数据写入磁盘以适应第一个文件的其余部分即使还有 100 的 MB 可用,文件中的缓存副本项也会完成。在从一个文件更改为下一个文件的过程中,查看正在写入哪些文件的资源监视器会显示这一点。
  • 同样在 128MiB 文件上,我的 Windows 2008r2 服务器立即在缓存中容纳大约 10 个文件,然后在复制大约 30 个文件后,在任何时候都可以在缓存中保存大约 4 个文件。
【解决方案2】:

对于非常小的文件,这里似乎是非阻塞的。我正在使用:

Start-Sleep -s 3

等待文件被复制。这不是一个理想的解决方案,但这是我目前所得到的。

【讨论】:

    【解决方案3】:

    也许“copy-item [...] | out-null”有助于等待完成。

    “Out-null 实际上会删除输出,而不是将其路由到 PowerShell 控制台,因此脚本将等待内容被删除,然后再继续。”

    解释来自ITProToday.com: https://www.itprotoday.com/powershell/forcing-powershell-wait-process-complete

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 2016-07-11
      • 2019-09-01
      • 2011-10-14
      • 2015-02-04
      • 1970-01-01
      相关资源
      最近更新 更多