在 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 box
,只需使用xcopy
. 可用是相当标准的xcopy
。
xcopy src \\dest-machine\shared-library-name\dest
xcopy \\src-machine\shared-library-name\dest src
Powershell 使用 Providers 的抽象来提供一个通用的数据存储接口。这些似乎与常用名词“Item”保持一致,因此您可以使用man *item*
. 如果您知道另一种方法来复制和以其他方式处理存储中的数据,您不妨使用它,但使用 cmdlet 提供了一种更好的“一次学习,经常使用”的方法。在您的情况下,您可以:
Copy-Item test.txt -Destination \\dest-machine\share
如果需要,Copy-item 还支持 -Credential 参数。
“网上邻居”并没有真正的 API,它只是一堆快捷方式,如果我没记错的话,SharePoint 共享使用 Shell 扩展。
综上所述:从 PowerShell 将 Sharepoint 作为文件系统访问还需要一个扩展,即SharePoint Provider。
您可以使用“net”命令进行身份验证,然后复制文件。
copy src \\dest-machine\shared-library-name\dest
如果需要,我不确定如何处理身份验证。
从我所看到的情况来看,似乎无法从命令行直接访问/操作网上邻居,无论是在 PowerShell 中还是在普通的 ol' 命令提示符中。
@slipsec (#13899):感谢您的建议,但 PowerShell 与net use
命令一样不支持目标路径中的端口号。
因此,在我的特殊情况下,我能想到的最好的事情就是咬紧牙关,购买类似 WebDrive 的东西,以通过非标准端口上的 WebDAV 启用驱动器映射,或者进行一些不同的配置(例如,具有不同 IP 地址的单独 Web 应用程序和主机标头)在 SharePoint 中通过标准端口上的 NTLM 公开网站。
我可能错了,但我认为 Nick 的 robocopy 解决方案或 Nathan 的复制命令解决方案都行不通。Robocopy 似乎想要一个映射驱动器,我不能这样做,因为它没有在端口 80 或 443 上运行,并且 Windows 无法处理包含 UNC 样式名称中的端口的路径:
copy src \\dest-machine:45000\shared-library-name\dest
我也没有看到可以处理这种情况的 NAnt 任务。
我也知道有一些工具可以让我映射 WebDAV 驱动器。我更想知道是否有某种方法可以在不使用 GUI 的情况下使用已设置的网上邻居。
是的你可以。我建议使用像 robocopy 这样的工具。