我的目标是通过PowerShell将Windows中的networking驱动器映射到WebDAV服务器。
我有一个脚本,可以自动创build一个安装了IIS并configuration了WebDAV的Azure虚拟机。 我可以通过Windows资源pipe理器手动将networking驱动器映射到WebDAV服务器(使用选项使用不同的凭据)。 这证实了WebDAV服务器configuration正确。 我也可以读写文件。
通过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/" 。
那么这是正确的做法吗? 新的PSDrive应该能够映射到WebDAV服务器吗? 如果没有,任何想法通过PowerShell映射networking驱动器?
这里是我将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。 (尽pipe服务器pipe理员可能不允许使用选项动词。)
我无法使New-PSDrive方法连接到我的https站点。 我在PowerShell中使用了一个dos命令,将其包装在一个testing中,以查看驱动器是否存在。
net use B: https://tu13.DEG3.usae.com/BAD/code /Persistent:Yes
我意识到这不是基于OP的完美方法,但我认为一个解决方法是值得的职位。
New-PSDrive -Name F -PSProvider FileSystem -Root "\\\\$FQDN_without_https@SSL/$URI_or_PathTo" -Credential <Username>
FQDN后请注意@SSL 。
这适用于PowerShell 5.0。