タイトルにあるように、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。ターゲットドライブの資格情報を具体的に指定できます)。
誰かアイデアはありますか?
編集:ああ男...私はこれを信じることができません....しかし、誰かがこれを見つけた場合に備えて、私はそれを残すつもりです。問題は、私のパスの末尾の_\
_でした。私はそれを削除しました、そしてそれはうまく持続しました。
あなたが発見したように:
末尾に\
を付けてドライブルートパスを指定しないでください。指定すると、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以降で作成)。