远程Powershell代码块并行执行

时间:2015-11-09 16:02:49

标签: c# multithreading powershell powershell-remoting

有人可以帮助理解远程PowerShell中的多线程吗? 我正在尝试仅使用WinRM将文件复制到远程计算机。这是算法:

  1. 将本地文件划分为byte []块。
  2. 每个块都是base64编码的。
  3. 将base64字符串发送到PowerShell代码块中的远程WinRM,该代码块对其进行解码并附加到文件中。
  4. 远程文件最终填充所有字节,并且是本地文件的精确副本。
  5. 问题是我在执行远程PowerShell块时得到“进程无法访问文件,因为它被另一个进程使用”类型的错误。看起来PowerShell并行执行我的脚本块。但我需要顺序执行。我可以覆盖这个吗?

    完整的代码示例here

1 个答案:

答案 0 :(得分:2)

每次创建远程PowerShell会话时,它都使用不同的PowerShell进程来执行请求。这就是您遇到文件争用问题的原因。您应该考虑为每个操作使用相同的远程会话,而不是每次要添加块时都创建一个新的。

顺便说一下,如果你打开(或当你到达)V5,你可以使用$s = New-PSSession remoteComputerName; Copy-Item src.txt C:\dst.txt -ToSession $s将文件复制到远程计算机。