Azure DevOps On-Premise - Как я могу остановить и удалить службу windows на удаленном компьютере? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть существующая служба Windows на удаленной машине.

Вот что мне нужно сделать:

  1. Остановить эту службу.
  2. Удалить этой службы.
  3. Скопируйте мои артефакты сборки в указанный каталог на этом удаленном компьютере.
  4. Создайте заново эту службу Windows.
  5. Запустите службу Windows.

Моя проблема:

  • Мои агенты сборки не могут ни остановить, ни удалить существующую службу Windows.
  • Я продолжаю получать следующая ошибка:

    [SC] OpenSCManager FAILED 5:

    Доступ запрещен.


enter image description here

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

@ Даниэль Манн задал правильный вопрос.

Прежде всего,

sc STOP $(serviceName)

должен был быть красным флагом.

@ Daniel Mann спросил:

Имеет ли учетная запись службы, под которой работает ваш агент, соответствующие разрешения [для этого]?

Но следует также спросите:

На какой машине вы хотите выполнить это? Агент сборки?

Это была моя проблема. Когда я тестировал этот конвейер выпуска в первый раз, целевая машина и агент сборки просто оказались одной и той же машиной .

Это был несчастный случай, потому что это не должно было быть дело для всех выпусков.


Решение:

Это правильно:

sc \\$(serviceMachine) STOP $(serviceName)

И @ Даниэль Манн было правильно:

  • У учетной записи службы, под которой работает агент сборки под , должны быть соответствующие разрешения для этого.
0 голосов
/ 12 февраля 2020

Есть несколько способов добиться этого, но я опишу один, который я рекомендую использовать PowerShell:

  1. В задачах развертывания добавьте " Запуск PowerShell " task;
  2. Выберите встроенный скрипт и вставьте следующий код:

    Get-Service -DisplayName "YOUR_SERVICE_NAME" | Stop-Service
    
  3. Скопируйте файлы артефактов в папку назначения (как вы это сделали);
  4. Повторите шаг 1 и вставьте приведенный ниже код, чтобы заново создать и запустить службу:

    $params = @{
      Name = "YOUR_SERVICE_NAME"
      BinaryPathName = "C:\WINDOWS\System32\svchost.exe -k netsvcs"
      DependsOn = "NetLogon"
      DisplayName = "Test Service"
      StartupType = "Manual"
      Description = "This is a test service."
    }
    New-Service @params
    

Подробнее о параметрах создания службы можно прочитать в Документах Microsoft * * 1023

...