我想编写一些代码,使用BITS在同一台服务器上的磁盘之间复制非常大的文件(第二块磁盘是SAN级克隆\快照)。
我调查了BITS,因为我认为这是一个很好的方法来获得进度\传输百分比完整数据,以及恢复功能等
我有很多托管的Powershell,我认为我已经准备好使用内置的BITS cmdlet,因为这将是一种超级快速的方式,我可以写包装来获取我需要的东西等等。我碰到了这个:
在非交互式上下文(例如Windows服务)中运行的进程中使用* -BitsTransfer cmdlet时,可能无法将文件添加到BITS作业,这可能导致挂起状态。要继续执行作业,必须登录用于创建传输作业的标识。例如,在作为任务计划程序作业执行的PowerShell脚本中创建BITS作业时,除非启用任务计划程序的任务设置“仅在用户登录时运行”,否则BITS传输将永远不会完成。“
通过模拟的Powershell运行空间执行任何操作会引发以下错误:
由于用户尚未登录网络,因此未执行请求的操作。指定的服务不存在。 (HRESULT异常:0x800704DD)“
我的网络服务是以AppPoolIdentity运行的,我冒充我们需要做的事情。有意义的是,这不能通过托管的Powershell工作,但任何人都可以想到一个解决方法吗?如果这是不可能的,我还有其他选择吗?
我在考虑使用BITS Compact Server作为替代方案,但文档很古老。
答案 0 :(得分:1)
你有没有想过使用robocopy?使用/ ZB开关运行对我来说一直很好用,你可以使用/ J来提高性能,从而实现无缓冲的I / O.对于输出,也可以使用/ ETA和/ TEE运行。