Невозможно добавить "-persist" в New-PSDrive - появляется ошибка "Тип сетевого ресурса неверный"
Как видно из названия, если я попытаюсь добавить -persist
Командлет возвращает ошибку:
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 Explorer, потому что он находится только в этом сеансе 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 с удаленными PSDrive (мы хотим использовать robocopy из-за его встроенных отчетов, управления атрибутами и способности поддерживать файловую структуру в месте назначения, и мы хотим использовать PSDrives, поэтому мы можем указать учетные данные для целевых дисков).
У кого-нибудь есть какие-либо идеи?
Изменить: О человек... Я не могу в это поверить... Но на случай, если кто-то еще найдет это, я собираюсь оставить это. Проблема заключалась в том, что \
на моем пути. Я удалил это, и оно сохранилось очень хорошо.
2 ответа
Как вы обнаружили:
Не указывайте корневые пути диска с завершающим \
потому что это вызывает New-PSDrive
потерпеть неудачу с неясным сообщением об ошибке New-PSDrive : The network resource type is not correct
когда -Persist
используется:
# Trailing '\': only OK *without* -Persist.
New-PSDrive -root \\foo\bar\ -name N -PSProvider filesystem
# !! Breaks with -Persist:
New-PSDrive -root \\foo\bar\ -name N -PSProvider filesystem
# No trailing '\': OK both with and without -Persist
New-PSDrive -root \\foo\bar -name N -PSProvider filesystem
Я сообщал об этом неожиданном поведении на GitHub, и для PowerShell Core было выделено зеленое исправление, хотя неясно, в какой будущей версии оно будет доступно (написано как PowerShell Core 6.2.0-preview.1).
Я пытаюсь подключить папку WebDav как сетевой диск. Без параметра -persist работает. Если я добавлю «-persist», я получаю сообщение об ошибке «неверный тип сетевого ресурса».
Работа:
$secpasswd2 = ConvertTo-SecureString "WebDAV" -AsPlainText -Force
$mycreds2 = New-Object System.Management.Automation.PSCredential ("www.dlp-test.com\WebDAV", $secpasswd2)
New-PSDrive -Name N -Root \\www.dlp-test.com@SSL\DavWWWRoot\webdav -PSProvider FileSystem -Credential $mycreds2
Не работает:
New-PSDrive -Name N -Root \\www.dlp-test.com@SSL\DavWWWRoot\webdav -PSProvider FileSystem -Credential $mycreds2 -Persist
Моя версия для PS:
Major Minor Build Revision
----- ----- ----- --------
5 1 19041 1320