C# WMI с несколькими переходами

Я написал код C# для синхронизации некоторых кубов служб Analysis Services. Одним из этапов этой синхронизации является копирование папки с сервера AS на другой.
Требование состоит в том, чтобы синхронизацию можно было запустить с третьего хоста, поэтому у нас есть двойной переход.

Чтобы скопировать папку, я подключаюсь с хоста A к источнику AS, на сервере B, используя протокол WMI, затем я удаленно запускаю на сервере B robocopy для копирования папки из источника. B к целевому серверу C.
Проблема в том, что при выполнении робокопирования соединение не имеет исходных учетных данных и не имеет прав на запись на целевом сервере. Я думаю, что для выполнения действия используется пользователь ANONYMOUS LOGON, поэтому просто в целях тестирования я назначил ему права записи на общий ресурс C, но также и таким образом robocopy завершается с ошибкой ERROR 5 (0x00000005) Доступ к целевому каталогу .

Сетевая диаграмма

Есть ли способ выполнить этот двойной прыжок, или я должен оставить идею использования хоста А?


person bull90    schedule 11.05.2016    source источник
comment
Это не совсем вопрос программирования. Может быть, лучше для superuser.com. Единственный элемент C# — это таинственный код C#, который я написал   -  person Liam    schedule 11.05.2016


Ответы (1)


@Лиам прав. Это лишь частично проблема программирования. Основная проблема заключается в том, что для вашего второго перехода (подключение от B к C от A) требуется делегирование для включения в AD. После получения делегирования правильно, ТОГДА это становится проблемой программирования, потому что вы должны указать имя пользователя и пароль в своем SWbemLocater.ConnectServer , но это самая простая часть.


PS - После размышления ... что, если вы настроили robocopy как запланированную задачу, а затем выполнили запланированную задачу удаленно из A? Я думаю, что это можно обойти, поскольку запланированная задача будет выполняться с правами доступа, установленными в задаче, поэтому технически второго перехода нет.


PPS - я могу убедиться, что это сработает. Создайте запланированную задачу на B, которая копируется на C. Обязательно используйте учетные данные, имеющие права на обоих компьютерах. Затем из A вы можете запустить запланированную задачу в B, которая скопирует ваши данные в C. Это позволяет избежать проблемы с делегированием.

person Tim    schedule 17.05.2016