web-dev-qa-db-ja.com

New-PSDriveに「-persist」を追加できません-「ネットワークリソースタイプが正しくありません」というエラーが発生します

タイトルにあるように、cmdltに_-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\
_

幸せな日々。それはうまくいきます。ただし、もちろん、このPSセッション内にあるため、Windowsエクスプローラーには表示されません。だから、私はそれを破壊し(_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
_

そしてそれは失敗します。コンテキストとして、リモートPSDriveでRoboCopyを使用してスクリプトを作成できるようにこれを行っています(組み込みのレポート、属性管理、および宛先でファイル構造を維持する機能のためにrobocopyを使用したいので、使用したいPSDrives。ターゲットドライブの資格情報を具体的に指定できます)。

誰かアイデアはありますか?

編集:ああ男...私はこれを信じることができません....しかし、誰かがこれを見つけた場合に備えて、私はそれを残すつもりです。問題は、私のパスの末尾の_\_でした。私はそれを削除しました、そしてそれはうまく持続しました。

4
RSchreib

あなたが発見したように:

末尾に\を付けてドライブルートパスを指定しないでください。指定すると、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で 、そして PowerShellCore の修正は青信号になっていますが、将来どのバージョンで利用可能になるかは不明です(PowerShell Core 6.2.0-preview.1以降で作成)。

1
mklement0