Невозможно добавить "-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
Другие вопросы по тегам