C#WMI多跳

时间:2016-05-11 09:20:24

标签: c# networking active-directory wmi robocopy

我写了一个 C#代码来同步一些Analysis Services多维数据集。 此同步的一个阶段是将文件夹从AS服务器复制到另一个服务器 要求是可以从第三个主机运行同步,因此我们有一个双跃点

要使用WMI协议将我从主机A连接的文件夹复制到服务器B上的AS源,然后在服务器B上远程运行 robocopy 以复制文件夹从源B到目标服务器C.
问题是,当执行robocopy时,连接没有原始凭据,并且它没有在目标服务器上写入的权限。我认为ANONYMOUS LOGON用户是用来执行操作的,所以,仅仅为了测试目的,我为它分配了共享C上的写权限,但也是这样,robocopy失败了 ERROR 5(0x00000005)访问目的地目录

Net diagram

有一种方法可以执行此双跳,或者我不得不放弃使用主机A的想法?

1 个答案:

答案 0 :(得分:1)

@Liam是正确的。这只是部分编程问题。主要问题是你的第二跳(从B到C的连接)需要在AD中启用delegation。一旦您的delegation settings正确无误,那么它就会成为编程问题,因为您必须在SWbemLocater.ConnectServer 电话中指定用户名和密码,但这真的很容易。< / p>

PS - 经过深思熟虑......如果您将robocopy设置为计划任务,然后从A远程执行计划任务怎么办?我认为这可能是一种解决方法,因为计划任务将使用在任务中设置的权限运行,因此技术上,没有第二跳。

PPS - 我可以验证这是否有效。在B上创建一个复制到C的计划任务。确保使用在两台计算机上具有权限的凭据。然后从A开始,您可以在B上运行计划任务,将您的数据复制到C.这样可以避免委派问题。