Как запустить задачу CruiseControl от имени администратора в Windows Server 2008

В настоящее время я использую CruiseControl.NET для автоматизации моей сборки. У нас есть два разных способа создания решения в моей среде сборки - один - с помощью Keil uVision4 IDE, другой - через Visual Studio 2008.

Я успешно получил решение Visual Studio для правильной сборки с использованием CruiseControl.NET и создал пакетный файл, который правильно использует интерфейс командной строки Keil uVision для компиляции моего проекта uvproj (подробности компиляции здесь).

описание проблемы

1) Я могу успешно выполнить сценарий сборки на моем сервере Windows 2008 и построить проект, если я создаю командную строку с правами администратора (я делаю это вручную - запуск -> запуск -> cmd с ctrl-shift-enter для запуска как администратор).

2) Однако, если я создам командную строку без прав администратора и попытаюсь выполнить командный файл, командный файл не будет работать, если я не приму приглашение подтвердить, что права администратора необходимы для запустить пакетный скрипт.

Как мне автоматически запустить командный файл от имени администратора через CruiseControl?

Можно ли это автоматизировать с помощью RunAs? команда?


Технические детали

1) Выполняемый командный файл довольно прост - он удаляет старый вывод и повторно создает вывод, создавая файл журнала сборки в расположении ниже.

set BuildLogLocation=BuildLog\BuildLog.txt

echo on
cd ../..
cd PTM
rmdir /s /q output
mkdir output
mkdir BuildLog
C:\Keil\UV4\UV4.exe -r myProj.uvproj -o %BuildLogLocation%

echo ErrorLevel of build is %ERRORLEVEL%
echo build complete, see %BuildLogLocation%

2) В настоящее время я хочу использовать функциональность Exec для запуска сценария сборки Keil, указанного выше:

<Exec>
    <Command>C:\myProject\Build\KeilBuild\BuildScript.bat<Command/>
    <buildTimeoutSeconds>600<buildTimeoutSeconds/>
    <!-- Details about error codes can be found here:
    http://www.keil.com/support/man/docs/uv4/uv4_commandline.htm -->
    <successExitCodes>0,1</successExitCodes>
<Exec/>

Связанные вопросы:


person CrimsonX    schedule 15.05.2012    source источник


Ответы (4)


Можете ли вы запустить CCService, службу Windows CruiseControl.NET, как пользователь с правами администратора? Сначала я попробую.

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

person Aaron Jensen    schedule 07.06.2012

Я знаю, что это старый, но у вас есть официальный способ сделать это через круиз-контроль?

Обычно я создаю его и вызываю для вызова других процессов «как администратор».

Создайте сценарий ".VBS", содержащий следующее:

Тусклый strBatchPath

strBatchPath = "PATH-TO-FILE.EXE"

Установите runBatch = CreateObject ("shell.application")

runBatch.shellexecute strBatchPath ,,, "runas", 1

Это может быть вариант для людей, которые не могут найти официальный способ

person Adam Lacey    schedule 03.11.2016

Вы можете попробовать psExec из sysinternals. Если вам не нужно запускать учетную запись nt-Authority, вы сможете использовать ее так же, как runas. Это позволяет вам передать имя пользователя / пароль в качестве переключателя (если память не изменяет)

person Simon Laing    schedule 07.06.2012

Я обнаружил, что при использовании PSEXEC и переключателе -h он затем "запускается от имени администратора" в пункте назначения.

e.g.

psexec -h \ ServerToRunOn / acceptpteula -u ДОМЕН \ ПОЛЬЗОВАТЕЛЬ -p ПАРОЛЬ "ПУТЬ К ФАЙЛУ"

Я использую CC.Net для вызова командного файла с указанным выше. Это запустит этот файл от имени администратора.

person Adam Lacey    schedule 04.11.2016