Powershell 使用新PSDrive映射网络驱动器时出现问题

Powershell 使用新PSDrive映射网络驱动器时出现问题,powershell,network-drive,copy-item,Powershell,Network Drive,Copy Item,我正在运行一个基于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:\tes

我正在运行一个基于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
New PSDrive-Name tid-PSProvider FileSystem-Root\\sname\c$\Users\\Appdata\Local\temp\\tid-Credential$cred
复制项目-来源c:\test\*tid:\
删除PSDrive-名称tid
在任何时候都可能有一堆任务在执行这个脚本。大多数情况下,它工作正常,文件被复制。偶尔我会在映射网络驱动器时看到以下错误:

同一用户与服务器或共享资源的多个连接, 不允许使用多个用户名。断开所有 以前与服务器或共享资源的连接,然后重试

出于测试目的,我的所有任务都获得了相同的凭证。无法解释为什么此错误不是每次都发生,如果它是一个多连接问题,如错误字符串所示


运行20个并行脚本15次(总共300次),发现此错误6次。有没有人能解释一下原因以及应该如何解决这个问题,

我收到了类似的错误消息。下面是我的历史和解决方案。 所以昨天我创建了新的PS驱动器

$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:找不到驱动器。名为“MyDrive”的驱动器 不存在

尝试再次创建驱动器:

$c = Get-Credential
$Drive = new-PSDrive -Name "MyDrive" -PSProvider FileSystem -Root "\\10.11.22.100\LogShare" -Credential $c -Scope global
现在得到

新PSDrive:通过与服务器或共享资源的多个连接 不允许同一用户使用多个用户名。 断开以前与服务器或共享资源的所有连接 然后再试一次

作为一种解决方案,我从新的PSDrive命令中删除了-Credential$c,它就工作了


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

您承认使用了不同的凭据集。Windows将不允许不同的凭据访问同一目标。我有时通过将FQDN和IP地址指定为映射驱动器来解决这个问题。Windows将其视为两个不同的目的地。我得找个技术参考。谢谢你,马特。使用不同的凭据映射到同一服务器似乎不是一个选项。奇怪的是,我也用同样的凭证间歇性地看到问题。这只是意味着复制项不能在不同用户可以选择进行远程复制的自动化环境中使用。
$c = Get-Credential
$Drive = new-PSDrive -Name "MyDrive" -PSProvider FileSystem -Root "\\10.11.22.100\LogShare" -Credential $c -Scope global