【发布时间】:2015-05-09 18:16:50
【问题描述】:
我正在运行一个基于 powershell 的多线程应用程序,其中每个线程(.net 任务)需要使用不同的凭据将一堆文件从一台机器复制到另一台机器。 这是在每个 .net 任务中运行的脚本
New-PSDrive -Name tid -PSProvider FileSystem -Root \\sname\c$\Users\<Uname>\Appdata\Local\temp\<myapp>\tid -Credential $cred
Copy-Item -Source c:\test\* tid:\
Remove-PSDrive -Name tid
在任何时候都可能有一堆任务在执行这个脚本。大多数情况下它工作正常,文件被复制。有时我在映射网络驱动器时看到此错误:
同一用户与服务器或共享资源的多个连接, 不允许使用多个用户名。断开所有 以前与服务器或共享资源的连接,然后重试
出于测试目的,我的所有任务都获得了相同的凭据。无法解释为什么这个错误不会每次都发生,如果它是错误字符串所说的多个连接的问题。
运行 20 个并行脚本 15 次(总共 300 次)并看到此错误 6 次。谁能解释一下这个问题的原因以及应该如何解决这个问题,
【问题讨论】:
-
您承认使用了不同的凭据集。 Windows 将不允许不同的凭据到达同一目的地。我有时通过将 FQDN 和 IP 地址指定为映射驱动器来解决这个问题。 Windows 将它们视为两个不同的目标。必须找到技术参考。
-
谢谢马特。似乎使用不同的凭据映射到同一台服务器不是一种选择。 connect.microsoft.com/PowerShell/feedback/details/751536/…。奇怪的是,我也使用相同的凭据间歇性地看到了这个问题。这只是意味着 copy-item 不能在不同用户可以选择进行远程复制的自动化环境中使用。
标签: powershell network-drive copy-item