Mapear unidade de rede para um servidor WebDAV via PowerShell

5

Meu objetivo é mapear uma unidade de rede no Windows para um servidor WebDAV por meio do PowerShell.

Eu tenho um script que cria automaticamente uma VM do Azure com o IIS instalado e o WebDAV configurado. Eu posso mapear manualmente a unidade de rede através do Windows Explorer para o servidor WebDAV (usando a opção de usar credenciais diferentes). Isso confirma que o servidor WebDAV está configurado corretamente. Eu posso ler e escrever arquivos também.

Via PowerShell Eu tentei usar o comando New-PSDrive e obter erros como você vê.

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

OU sem o parâmetro -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

Como se pode ver o termo "http://$serviceName.cloudapp.net/" avalia com sucesso para "http://webdavservertest3.cloudapp.net/" .

Então, essa é a abordagem correta? O New-PSDrive deve ser capaz de mapear para servidores WebDAV? Se não, alguma ideia para mapear a unidade de rede via PowerShell?

    
por Peter Kirchner 07.05.2015 / 10:02

4 respostas

2

Este é um exemplo prático de montagem do site WebDAV da Sysinternals em minha unidade S:

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

Observe que você precisa usar o formato UNC, não o prefixo http:// .

Além disso, você precisa ter certeza de que o serviço WebClient está sendo executado no seu computador.

Se você quisesse confirmar que um servidor suporta WebDAV, você poderia fazer:

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

E se isso retornar algo como 1,2,3 , o servidor suportará várias versões do WebDAV. (Embora o administrador do servidor possa ter desautorizado o verbo Options.)

    
por 07.05.2015 / 16:20
1
New-PSDrive -Name F -PSProvider FileSystem -Root "\\$FQDN_without_https@SSL/$URI_or_PathTo" -Credential <Username>

Por favor, preste atenção para @SSL após o FQDN.

Isso funciona para o PowerShell 5.0.

    
por 24.08.2017 / 11:02
0

Não consegui conectar o método New-PSDrive ao meu site https. Eu usei um comando dos dentro do powershell envolvido em um teste para ver se a unidade existia.

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

Eu percebo que essa não é a abordagem perfeita baseada no OP, mas achei que um trabalho em torno valeu a pena.

    
por 11.07.2017 / 18:26
0

Eu segui todos os recursos acima e nenhum funcionou para minhas tentativas de montar minha biblioteca de documentos 365 Sharepoint hospedada. Eventualmente, montei-o como um local de rede compartilhado e observei nas propriedades dessa conexão o verdadeiro caminho WebDAV que você deve usar para isso.

Esta cadeia de conexão permite montar e usar a biblioteca do SharePoint como uma letra de unidade:

function Map-SharePoint
        {
        $cred = Get-Credential "[email protected]"
        New-PSDrive -Name U -PSProvider FileSystem -Root "\organisation.sharepoint.com@SSL\DavWWWRoot\Shared Documents" -Credential $cred
        }

Uma nota sobre o caminho, isso não funcionará se o patch contiver% 20 para espaços. Você precisa deixá-lo como está e envolvê-lo entre aspas.

    
por 23.05.2018 / 10:49