Моя цель состоит в том, чтобы подключить сетевой диск в Windows к серверу WebDAV через PowerShell.
У меня есть сценарий, который автоматически создает Azure VM с установленным IIS и настроенный WebDAV. Я могу успешно подключить вручную сетевой диск через Windows Explorer к серверу 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/"
.
Так, действительно ли это - правильный подход? Должен Новый-PSDrive быть способным к отображению на серверы WebDAV? В противном случае какая-либо идея подключить сетевой диск через PowerShell?
Вот рабочий пример того, как я монтирую сайт 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. (Хотя администратор сервера мог запретить команду «Параметры».)
Мне не удалось получить метод New-PSDrive для подключения к моему сайту https. Я использовал команду dos в PowerShell, завернутую в тест, чтобы увидеть, существует ли диск.
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>
Обратите внимание на @SSL
после FQDN.
Это работает для PowerShell 5.0.
Я использовал все вышеперечисленные ресурсы, и ни одна из моих попыток смонтировать размещенную на хосте библиотеку документов 365 Sharepoint не сработала. В конце концов я смонтировал его как общую сетевую папку и отметил в свойствах этого подключения истинный путь WebDAV, который вы должны использовать для этого.
Эта строка подключения позволяет мне смонтировать и использовать библиотеку Sharepoint в качестве буквы диска:
function Map-SharePoint
{
$cred = Get-Credential "email@address.com"
New-PSDrive -Name U -PSProvider FileSystem -Root "\\organisation.sharepoint.com@SSL\DavWWWRoot\Shared Documents" -Credential $cred
}
Примечание о пути, это не сработает, если вы исправите, содержащий% 20 для пробелов. Оставьте как есть и заключите в кавычки.