web-dev-qa-db-ja.com

PowerShellを介してネットワークドライブをWebDAVサーバーにマップする

私の目標は、WindowsのネットワークドライブをPowerShellを介してWebDAVサーバーにマップすることです。

Azureを自動的に作成するスクリプトがありますVM with IISインストールされ、WebDAVが構成されています。Windowsエクスプローラーを介して手動でネットワークドライブをWebDAVサーバーに手動でマップできます(別の資格情報を使用するオプションを使用)。これにより、WebDAVサーバーが正しく構成されていることが確認されます。ファイルの読み取りと書き込みもできます。

PowerShellを使用して、コマンドNew-PSDriveを使用しようとしましたが、ご覧のとおりエラーが発生しました。

New-PSDrive –Name $networkDrive –PSProvider FileSystem –Root "http://$serviceName.cloudapp.net/" –Persist
New-PSDrive : When you use the Persist parameter, the root must be a file system location on a remote computer.
At line:1 char:1
+ New-PSDrive –Name $networkDrive –PSProvider FileSystem –Root "http:// ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Z:PSDriveInfo) [New-PSDrive], NotSupportedException
    + FullyQualifiedErrorId : DriveRootNotNetworkPath,Microsoft.PowerShell.Commands.NewPSDriveCommand

ORパラメータなし-Persist

New-PSDrive –Name $networkDrive –PSProvider FileSystem –Root "http://$serviceName.cloudapp.net/"
New-PSDrive : The specified drive root "http://webdavservertest3.cloudapp.net/" either does not exist, or it is not 
a folder.
At line:1 char:1
+ New-PSDrive –Name $networkDrive –PSProvider FileSystem –Root "http:// ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ReadError: (Z:PSDriveInfo) [New-PSDrive], IOException
    + FullyQualifiedErrorId : DriveRootError,Microsoft.PowerShell.Commands.NewPSDriveCommand

ご覧のとおり、"http://$serviceName.cloudapp.net/"という用語は"http://webdavservertest3.cloudapp.net/"と評価されます。

それで、これは正しいアプローチですか? New-PSDriveはWebDAVサーバーにマッピングできますか?そうでない場合、PowerShellを介してネットワークドライブをマップするアイデアはありますか?

6
Peter Kirchner

これは、Sysinternals WebDAVサイトをS:ドライブにマウントする作業例です。

[String]$WebDAVShare = '\\live.sysinternals.com\Tools'
New-PSDrive -Name S -PSProvider FileSystem -Root $WebDAVShare

http://接頭辞ではなく、UNC形式を使用する必要があることに注意してください。

また、コンピューターでWebClientサービスが実行されていることを確認する必要があります。

サーバーがWebDAVをサポートしていることを確認したい場合は、次のようにします。

(Invoke-WebRequest http://live.sysinternals.com -Method Options).Headers.DAV  

そして、それが1,2,3のようなものを返す場合、サーバーはさまざまなバージョンのWebDAVをサポートします。 (ただし、サーバー管理者はOptions動詞を許可していない場合があります。)

3
Ryan Ries
New-PSDrive -Name F -PSProvider FileSystem -Root "\\\\$FQDN_without_https@SSL/$URI_or_PathTo" -Credential <Username>

FQDNの後の@SSLに注意してください。

これはPowerShell 5.0で機能します。

1
user432548

New-PSDriveメソッドを使用してhttpsサイトに接続できませんでした。ドライブが存在するかどうかを確認するために、テストにラップされたpowershell内でdosコマンドを使用しました。

Net Use B: https://tu13.DEG3.usae.com/BAD/code /Persistent:Yes

これはOPに基づく完璧なアプローチではないことに気づきましたが、回避策は投稿の価値があると思いました。

0
Joe Johnston

私は上記のすべてのリソースを追跡しましたが、ホストされている365 Sharepointドキュメントライブラリをマウントしようとしても何も機能しませんでした。結局私はそれを共有ネットワークの場所としてマウントし、その接続のプロパティに、このために使用する必要がある実際のWebDAVパスを書き留めました。

この接続文字列により、Sharepointライブラリをドライブ文字としてマウントして使用できます。

function Map-SharePoint
        {
        $cred = Get-Credential "[email protected]"
        New-PSDrive -Name U -PSProvider FileSystem -Root "\\organisation.sharepoint.com@SSL\DavWWWRoot\Shared Documents" -Credential $cred
        }

パスに関するメモ。パッチにスペース用の%20が含まれている場合、これは機能しません。そのままにして、引用符で囲む必要があります。

0
Patrick