Моя цель - подключить сетевой диск в Windows к серверу WebDAV через PowerShell.
У меня есть сценарий, который автоматически создает виртуальную машину Azure с установленным 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
ИЛИ без параметра -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?
Вот рабочий пример того, как я монтирую сайт 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.)
New-PSDrive -Name F -PSProvider FileSystem -Root "\\\\$FQDN_without_https@SSL/$URI_or_PathTo" -Credential <Username>
Обратите внимание на @SSL
после FQDN.
Это работает для PowerShell 5.0.
Мне не удалось заставить метод New-PSDrive подключиться к моему сайту https. Я использовал команду dos в PowerShell, завернутую в тест, чтобы увидеть, существует ли диск.
net use B: https://tu13.DEG3.usae.com/BAD/code /Persistent:Yes
Я понимаю, что это не идеальный подход, основанный на OP, но я подумал, что работа стоит того.
Я следил за всеми указанными выше ресурсами, и ни одна из них не сработала при моих попытках смонтировать мою размещенную библиотеку документов 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 для пробелов. Вам нужно оставить как есть и заключить в кавычки.