通过 PowerShell 将网络驱动器映射到 WebDAV 服务器

通过 PowerShell 将网络驱动器映射到 WebDAV 服务器

我的目标是通过 PowerShell 将 Windows 中的网络驱动器映射到 WebDAV 服务器。

我有一个脚本,可以自动创建一个安装了 IIS 并配置了 WebDAV 的 Azure VM。我可以通过 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

或不带参数-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 映射网络驱动器吗?

答案1

下面是我将 Sysinternals WebDAV 站点安装到我的 S: 驱动器的一个工作示例:

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

请注意,您需要使用 UNC 格式,而不是前缀http://

您还需要确保 WebClient 服务正在您的计算机上运行。

如果您想确认服务器支持 WebDAV,您可以执行以下操作:

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

如果返回的内容类似于以下内容1,2,3,则表明服务器支持各种版本的 WebDAV。(尽管服务器管理员可能不允许使用 Options 动词。)

答案2

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

请注意@SSLFQDN 之后的内容。

这适用于 PowerShell 5.0。

答案3

我遵循了上述所有资源,但都无法成功安装托管的 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 空格,则此方法将不起作用。您需要保留原样并将其括在引号中。

答案4

我无法使用 New-PSDrive 方法连接到我的 https 站点。我使用 powershell 中的 dos 命令进行测试,以查看驱动器是否存在。

net use B: https://tu13.DEG3.usae.com/BAD/code /Persistent:Yes

我意识到这不是基于 OP 的完美方法,但我认为采取一种解决方法是值得的。

相关内容