我的目标是通过 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>
请注意@SSL
FQDN 之后的内容。
这适用于 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 的完美方法,但我认为采取一种解决方法是值得的。