Pergunta

É possível, no Windows XP, copiar arquivos para um local de rede a partir da linha de comando, de um arquivo em lote ou, melhor ainda, de um script do PowerShell?

O que me levou a seguir esse caminho de pesquisa foi tentar publicar arquivos em uma biblioteca de documentos WSS 3.0 a partir da máquina de um usuário.Não consigo mapear uma unidade para a biblioteca em questão porque o site WSS só está disponível para autenticação via NTLM em uma porta diferente de 80 ou 443.Suponho que eu poderia usar alternativamente os serviços da Web WSS para enviar os arquivos, mas estou realmente curioso para saber a resposta a essa pergunta agora.

Foi útil?

Solução 6

Pelo que estou vendo, parece que não é possível acessar/manipular diretamente um local de rede a partir da linha de comando, seja no PowerShell ou no simples prompt de comando.

@slipsec (#13899):Obrigado pela sugestão, mas o PowerShell não suporta o número da porta no caminho de destino mais do que o net use comando faz.

Portanto, a melhor coisa que posso fazer na minha situação específica é aguentar e comprar algo como o WebDrive para ativar o mapeamento de unidades via WebDAV em portas não padrão ou fazer alguma configuração diferente (por exemplo,aplicativo Web separado com endereço IP e cabeçalhos de host diferentes) no SharePoint para expor o site via NTLM em uma porta padrão.

Outras dicas

Usando um arquivo em lote, você pode fazer logon no recurso e copiar o arquivo:

O arquivo em lote conteria o seguinte:

net use \\{dest-machine}\{destfolder} {password} /user:{username}
copy {file} \\{dest-machine}\{destfolder}

por exemplo.

net use \\Development\myfolder mypassword /user:Administrator
copy newfile.c \\development\myfolder

Se você está se referindo a um windows box, Apenas use xcopy.É bastante padrão ter xcopy disponível.

xcopy src \\dest-machine\shared-library-name\dest
xcopy \\src-machine\shared-library-name\dest src

Powershell usa a abstração de provedores para fornecer uma interface comum em armazenamentos de dados.Eles parecem aderir ao substantivo comum "Item", então você pode obter uma lista completa com man *item*.Se você conhece outra maneira de copiar e trabalhar com dados de um armazenamento, é melhor usá-la, mas usar os cmdlets fornece uma abordagem melhor do tipo "aprender uma vez, usar com frequência".No seu caso, você poderia:

Copy-Item test.txt -Destination \\dest-machine\share

Copy-item também suporta o parâmetro -Credential se você precisar.

"Locais de rede" realmente não tem uma API, são apenas um monte de atalhos, e o compartilhamento do SharePoint usa uma extensão Shell, se bem me lembro.

Tudo isso para dizer:acessando o Sharepoint como um sistema de arquivos do PowerShell também requer uma extensão, o Provedor SharePoint.

você poderia usar os comandos 'net' para autenticar e depois copiar os arquivos.

copy src \\dest-machine\shared-library-name\dest

Eu não sou realmente saiba exatamente como lidar com a autenticação, se for necessário.

Se for algo que você precisa criar um script, você deve considerar NAnt.

É usado principalmente para criar scripts, mas é muito poderoso e razoavelmente fácil de começar.

Há também NAntContrib e a tarefa ftp nant o que deve ajudá-lo.

Posso estar errado sobre isso, mas acho que nem a solução de robocópia de Nick nem a solução de comando de cópia de Nathan funcionarão.O Robocopy parece querer uma unidade mapeada, o que não posso fazer porque ela não está sendo executada na porta 80 ou 443, e o Windows não consegue manipular um caminho que inclua a porta em um nome no estilo UNC:

copy src \\dest-machine:45000\shared-library-name\dest

Também não vi uma tarefa NAnt que pudesse lidar com essa situação.

Também sei que existem ferramentas que me permitirão mapear unidades WebDAV.Eu queria saber se havia alguma maneira de usar os locais de rede que foram configurados sem usar a GUI.

Sim você pode.Sugiro usar uma ferramenta como o robocopy.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top