如标题所示,如果我尝试将-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,因此我们可以为目标驱动器指定凭据)。
有人有什么想法吗?
编辑:哦,天哪。。。我简直不敢相信。。。。问题出在我后面的\
后面。我删除了它,它仍然可以正常运行。
答案 0 :(得分:0)
您已经发现:
请勿在驱动器根路径后缀\
,因为这样做会导致{{1}失败,并在{{1 }}用于:
New-PSDrive
我已经报告了这种意外的行为on GitHub和一个fix has been green-lighted for PowerShell Core,尽管目前尚不清楚它将在哪个将来的版本中使用(自PowerShell Core 6.2.0-preview.1起编写)。