我正在运行基于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次。有人可以解释这个的原因以及如何解决这个问题,
答案 0 :(得分:0)
我有类似的错误消息。以下是我的历史和解决方案。 所以昨天我创建了新的PS-Drive
$c = Get-Credential
$Drive = new-PSDrive -Name "MyDrive" -PSProvider FileSystem -Root "\\10.11.22.100\LogShare" -Credential $c -Scope global
之后,我成功使用了“ MyDrive”
像
get-childItem -path "MyDrive:\"
今天,重新启动PC后,再次尝试
get-childItem -path "MyDrive:\"
但是得到了
Get-ChildItem:找不到驱动器。名称为“ MyDrive”的驱动器 不存在。
试图再次创建驱动器:
$c = Get-Credential
$Drive = new-PSDrive -Name "MyDrive" -PSProvider FileSystem -Root "\\10.11.22.100\LogShare" -Credential $c -Scope global
现在有了
new-PSDrive:通过以下方式与服务器或共享资源建立多个连接 不允许同一用户使用多个用户名。 断开与服务器或共享资源的所有先前连接 然后重试
作为一种解决方案,我从New-PSDrive命令中删除了-凭据$ c ,它可以正常工作。
Powershell会以某种方式记住凭据,并且不允许使用相同的凭据连接到共享驱动器