在Windows XP中,是否可以通过命令行、批处理文件或者更好的PowerShell脚本将文件复制到网络位置?
我开始研究这个问题是因为我试图从用户的计算机发布文件到WSS 3.0文档库。由于WSS站点只能通过NTLM进行身份验证并且位于80或443端口之外,我无法映射驱动器到相关的文档库。我想我可以使用WSS Web服务来推送文件,但现在我真的很想知道这个问题的答案。
在Windows XP中,是否可以通过命令行、批处理文件或者更好的PowerShell脚本将文件复制到网络位置?
我开始研究这个问题是因为我试图从用户的计算机发布文件到WSS 3.0文档库。由于WSS站点只能通过NTLM进行身份验证并且位于80或443端口之外,我无法映射驱动器到相关的文档库。我想我可以使用WSS Web服务来推送文件,但现在我真的很想知道这个问题的答案。
通过批处理文件,您可以同时登录到资源并复制文件:
批处理文件将包含以下内容:
net use \\{dest-machine}\{destfolder} {password} /user:{username}
copy {file} \\{dest-machine}\{destfolder}
net use \\Development\myfolder mypassword /user:Administrator
copy newfile.c \\development\myfolder
如果您需要提到一个 Windows 电脑,只需使用 xcopy
。通常情况下,xcopy
都是可用的。
xcopy src \\dest-machine\shared-library-name\dest
xcopy \\src-machine\shared-library-name\dest src
Powershell使用提供者的抽象来提供对数据存储的通用接口。这些似乎坚持常见名词“Item”,因此您可以使用man *item*
获取完整列表。如果您知道另一种从存储中复制和处理数据的方法,那么也可以使用它,但使用cmdlet提供了更好的“一次学习,经常使用”的方法。在您的情况下,您可以:
Copy-Item test.txt -Destination \\dest-machine\share
如果您需要,Copy-item还支持-Credential参数。
copy src \\dest-machine\shared-library-name\dest
如果需要认证,我不是非常确定如何处理。
从我所看到的情况来看,似乎无法直接从命令行访问/操作网络位置,无论是在PowerShell还是普通的命令提示符中。
@slipsec (#13899):
感谢您的建议,但是PowerShell不支持目标路径中的端口号,就像net use
命令一样。
因此,在我特定的情况下,我能想到的最好的办法是咬紧牙关购买像WebDrive这样的东西,以便在非标准端口上通过WebDAV启用驱动器映射,或者在SharePoint中进行一些不同的配置(例如使用不同IP地址和主机头的单独Web应用程序)以通过NTLM在标准端口上公开站点。
copy src \\dest-machine:45000\shared-library-name\dest
我没有看到任何处理这种情况的NAnt任务。
我也知道有一些工具可以让我映射WebDAV驱动器。我更想知道是否有一些方法可以利用已经设置好的网络位置,而不使用GUI。
可以的。我建议使用像robocopy这样的工具。