3

我正在运行一个基于 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 次。有人可以解释这个原因以及应该如何解决这个问题,

4

1 回答 1

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:\"

今天重启电脑后又试了

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 命令中删除了-Credential $c并且它起作用了。

Powershell 以某种方式记住凭据,并且不允许使用相同的凭据连接到共享驱动器

于 2018-11-01T10:08:11.550 回答