Я хотел бы выполнить команду SC против сетевой цели от имени другого пользователя. Мне также нужно указать имя пользователя и пароль в командной строке, так как это необходимо для сценариев. Однако я не вижу в SC параметров для выполнения команды от имени другого пользователя. Я вижу параметр «obj», который принимает имя пользователя, но, похоже, он предназначен для настройки учетной записи пользователя, под которой должна работать сама служба.
Если нет возможности изменить пользовательский контекст выполнения, есть ли другая команда, которая позволит мне создавать / запускать / останавливать службу Windows с использованием сценариев (вызов из TeamCity)
Использовать Инструмент командной строки "RunAs", он позволяет указать явный набор учетных данных и поддерживает форматирование «Домен \ Имя пользователя» и UPN, что позволяет вам пройти аутентификацию как другой пользователь и выполнить команду:
Runas /user:Domain\user "sc \\remoteServer stop serviceKeyName"
Настроить запланированную задачу с определенной учетной записью входа
Завершено установка и использование PsExec - http://technet.microsoft.com/en-us/sysinternals/bb897553. Позволяет указывать имя пользователя / пароль в строке, поэтому можно использовать скрипты.
В PowerShell:
(get-wmiobject win32_service -comp servername -cred domain\user -filter "name='browser'").stopservice()
-cred
также появится диалоговое окно учетных данных
Заменить servername
, domain\user
и name=
с правильными ценностями
с участием -cred
вы даже можете использовать сохраненные учетные данные.