我可以从脚本或命令行将文件复制到网络位置吗?

时间:2008-08-13 20:02:07

标签: powershell scripting command-line moss wss

在Windows XP中,是否可以从命令行,批处理文件或者更好的PowerShell脚本将文件复制到网络位置?

让我走上这条研究之路的是尝试将文件从用户的机器发布到WSS 3.0文档库。我无法将驱动器映射到相关库,因为WSS站点仅可用于通过除80或443之外的端口上的NTLM进行身份验证。我想我可以替代地使用WSS Web服务来推送文件,但我我现在对这个问题的答案非常好奇。

9 个答案:

答案 0 :(得分:19)

使用批处理文件,您既可以登录资源又可以复制文件:

批处理文件将包含以下内容:

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

e.g。

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

答案 1 :(得分:6)

如果您指的是windows box,请使用xcopy。让xcopy可用是非常标准的。

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

答案 2 :(得分:3)

Powershell使用Providers的抽象来为数据存储区提供通用接口。这些似乎坚持使用通用名词“Item”,因此您可以获得包含man *item*的完整列表。如果您知道另一种复制方式并以其他方式处理商店中的数据,您也可以使用它,但使用cmdlet可以提供更好的“一次学习,常用”方法。在你的情况下,你可以:

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

如果需要,复制项目还支持-Credential参数。

答案 3 :(得分:2)

“网络位置”实际上没有API,它只是一堆快捷方式,如果我没记错的话,SharePoint共享使用Shell扩展。

所有这一切:从PowerShell 访问Sharepoint作为文件系统还需要一个扩展名SharePoint Provider

答案 4 :(得分:1)

您可以使用'net'命令进行身份验证,然后复制文件。

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

我不是确实确定如何在需要时处理身份验证。

答案 5 :(得分:1)

从我所看到的情况来看,似乎无法从命令行直接访问/操作Network Place,无论是在PowerShell还是在普通ol'命令提示符下。

@slipsec(#13899): 感谢您的建议,但PowerShell不支持目标路径中的端口号,而不仅仅是net use命令。

因此,在我的特定情况下,我能做的最好的事情就是咬紧牙关并购买像WebDrive这样的东西来通过WebDAV在非标准端口上启用驱动器映射,或者做一些不同的配置(例如,使用不同的Web应用程序SharePoint中的IP地址和主机标头),用于通过标准端口上的NTLM公开站点。

答案 6 :(得分:0)

如果您需要编写脚本,则应考虑NAnt

它主要用于构建脚本,但它非常强大且相当容易上手。

还有NAntContribnant ftp task可以帮助你。

答案 7 :(得分:0)

我可能错了,但我认为Nick的robocopy解决方案或Nathan的复制命令解决方案都不会起作用。 Robocopy似乎想要一个映射驱动器,我不能这样做,因为它没有在端口80或443上运行,并且Windows无法处理包含UNC风格名称端口的路径:

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

我也没有看到可以处理这种情况的NAnt任务。

我也知道有些工具可以让我映射WebDAV驱动器。我更想知道是否有某种方法可以使用已经设置的网络位置而不使用GUI。

答案 8 :(得分:-1)

是的,你可以。我建议使用像robocopy这样的工具。