无法将“ -persist”添加到New-PSDrive-出现错误“网络资源类型不正确”

时间:2018-11-12 17:50:20

标签: powershell windows-scripting drive-mapping powershell-v5.1 new-psdrive

如标题所示,如果我尝试将-persist添加到cmdlt,则会返回错误:

New-PSDrive : The network resource type is not correct At line:1 char:1 + New-PSDrive -Name P -Root <redacted> ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (P:PSDriveInfo) [New-PSDrive], Win32Exception + FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand

作为参考,这是PowerShell中的管理员会话,但是如果在常规用户会话中执行此操作,则会得到完全相同的响应:

PS> $PSVersionTable.psversion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      16299  666

从一开始:我确认要使用的驱动器号可用(在这种情况下为P)

PS> get-psdrive

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
Alias                                  Alias
C                  36.80         22.11 FileSystem    C:\                                               windows\system32
Cert                                   Certificate   \
D                                      FileSystem    D:\
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE                  ...ntrol\NetworkProvider\Order
Variable                               Variable
WSMan                                  WSMan

然后尝试运行:(我已经将$locale定义为变量,例如'\\foo\bar\')。

New-PSDrive -PSProvider FileSystem -Name P -Root $locale -Scope global

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
P                                      FileSystem    \\foo\bar\

快乐的日子。这样可行。但是,当然,它对Windows资源管理器不可见,因为它只是在此PS会话中。因此,我销毁了它(remove-psdrive P)并验证它是否消失了(get-psdrive)(此处未显示),然后尝试创建一个持久版本(相同的命令,仅使用-persist):

PS> New-PSDrive -PSProvider FileSystem -Name P -Root $locale -Scope global -Persist
New-PSDrive : The network resource type is not correct
At line:1 char:1
+ New-PSDrive -PSProvider FileSystem -Name P -Root $locale -Scope globa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (P:PSDriveInfo) [New-PSDrive], Win32Exception
    + FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand

它失败了。对于上下文,我正在这样做,因此我可以将RoboCopy与远程PSDrives一起使用脚本(我们希望使用robocopy,因为它具有内置的报告,属性管理以及能够在目标位置维护文件结构的能力,并且我们想使用PSDrives,因此我们可以为目标驱动器指定凭据)。

有人有什么想法吗?

编辑:哦,天哪。。。我简直不敢相信。。。。问题出在我后面的\后面。我删除了它,它仍然可以正常运行。

1 个答案:

答案 0 :(得分:0)

您已经发现:

请勿在驱动器根路径后缀\ ,因为这样做会导致{{1}失败,并在{{1 }}用于:

New-PSDrive

我已经报告了这种意外的行为on GitHub和一个fix has been green-lighted for PowerShell Core,尽管目前尚不清楚它将在哪个将来的版本中使用(自PowerShell Core 6.2.0-preview.1起编写)。