Невозможно добавить «-persist» в New-PSDrive - ошибка «тип сетевого ресурса неверный» - PullRequest
0 голосов
/ 12 ноября 2018

Как видно из названия, если я пытаюсь добавить -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 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, поэтому мы можем указать учетные данные для целевых дисков).

У кого-нибудь есть идеи?

Редактировать: О, чувак ... Я не могу в это поверить ... Но на случай, если кто-то еще найдет это, я собираюсь оставить это. Проблема заключалась в том, что на моем пути тянулся \. Я удалил это, и оно сохранилось очень хорошо.

1 Ответ

0 голосов
/ 12 ноября 2018

Как вы обнаружили:

Не указывайте корневые пути диска с завершающим символом \, так как это приводит к сбою 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).

...