Я настраиваю сборку интеграционных тестов, где я просто пытаюсь запустить службу Windows.

Я использовал команду InvokeProcess для запуска сценариев PowerShell, которые просто выполняют следующие действия.

Start-Service ServiceName

Сценарий не работает, когда я запускаю процесс сборки, но когда я выполняю тот же сценарий вне TFS, он работает. Я получаю следующую ошибку в журналах TFS

Start-Service: Служба ServiceName (ServiceName) не может быть запущена из-за следующей ошибки: Невозможно открыть ServiceName сервис на компьютере '.'.

Затем я попытался изменить способ запуска службы и использовал SC.exe с параметрами «Start ServiceName» в InvokeProcess, и я получил ошибку отказа в доступе в TFS следующим образом: -

SC start ServiceName. [SC] StartService: OpenService НЕ ВЫПОЛНЕН 5: В доступе отказано.

Я использую учетную запись сетевой службы для запуска сборки.

После некоторого поиска я пришел к выводу, что мне нужно запустить InvokeProcess с повышенными привилегиями, но я не знаю, как мне это сделать в TFS.

Любая помощь очень ценится.

1
tangokhi 23 Фев 2016 в 16:08

2 ответа

Лучший ответ

Мы запускаем наш агент сборки как настраиваемую учетную запись службы и даем этой учетной записи домена доступ администратора на серверах, на которых мы развертываем.

2
chief7 23 Фев 2016 в 16:43

Я решил проблему, добавив учетную запись сетевой службы в группу администраторов. Я мог бы не пойти с этим решением, поскольку кажется неправильным назначать административные права учетной записи сетевой службы, но я не знаю, как назначить разрешения запуска / остановки службы для сетевой службы без добавления этой учетной записи в группу администраторов.

Короче говоря, я согласен с ответом, что для запуска сборки с соответствующими привилегиями необходимо использовать настраиваемую учетную запись службы.

0
tangokhi 24 Фев 2016 в 08:31