2014-11-25 9 views
0

Я использую TFS для запуска PSExec для запуска процесса InstallShield, который создает установщиков. Наш агент сборки TFS работает под учетной записью NETWORK SERVICE.Не удается запустить PSExec с помощью учетной записи NETWORK SERVICE

Я запускаю PSExec с использованием параметров -u -p, и я могу запустить команду и успешно построить инсталляторы из командной строки на удаленную машину.

Однако в TFS я всегда получаю код ошибки 2250, и установщики не строят.

Чтобы изолировать проблему, я изменил Psexec команду к следующему ...

PsExec.exe -accepteula \\<machine> -u <username> -p <password> xcopy /y c:\temp\testing.bat c:\temp\1.bat 

Если я бегу выше из командной строки она копирует файл. Если я запускаю выше от TFS (взывая к вышесказанному в пакетном файле), он терпит неудачу с 2250.

Таким образом, чтобы имитировать то, что TFS делает я ...

  1. Started командную строку с повышенные привилегии администратора
  2. Выпущено psexec -i -u "nt authority\network service" cmd.exe
  3. Ран пакетный файл, содержащий вышеупомянутую команду XCopy

Так шаг 2 запускает командную строку с помощью учетной записи сетевой службы. Когда я запускаю шаг 3 из этой командной строки, я получил ту же ошибку 2250. Так что это хорошо b/c, теперь TFS не соответствует действительности, и я ближе к реальной проблеме.

Только для усмешек я добавил NETWORK SERVICE в группу администраторов удаленных окон. Это не решило проблему.

Так вот где я нахожусь ...

  1. Если я войти в поле TFS, используя логин в группе администратора, откройте командную строку и запустить XCopy команда пакетного файла с - u -p, все работает нормально.
  2. Если я запустил приглашение cmd с учетной записью NETWORK SERVICE и запустил тот же командный файл, что и в шаге 1, я получил отказ 2250.

Так что, на мой взгляд, проблема явно связана с учетной записью NETWORK SERVICE. Вопрос: как я могу запустить psexec для этой учетной записи?

UPDATE

Вот диалоги, которые показывают NETWORK_SERVICE учетную запись в группу администраторов для и что она имеет полный доступ к пути (C: \ Temp).

NETWORK_SERVICE is in the Administrators group

enter image description here

+0

Вы уверены, что NETWORK_SERVICE счету администратора privleges на '' и что он может читать и писать 'C: \ temp'? Для вашего ответа кажется, что проблема не 'psexec', а фактическая' xcopy' – Jcl

+0

Да, я уверен. Я обновлю вопрос с изображениями, которые показывают это ... –

+0

Немного диких предположений здесь, но вы попытались установить значение реестра 'LocalAccountTokenFilterPolicy' в' 1' в 'HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ system ', чтобы вы могли удаленно администрировать локальную учетную запись? – Jcl

ответ

1

Допустим, ваши две машины называются TFSSERVER и TargetMachine.

NetworkService на сервере TFS будет рассматриваться как учетная запись машины, то есть DOMAIN\TFSSERVER$, на TARGETMACHINE.Любые учетные записи в группе NT AUTHORITY являются локальными учетными записями, поэтому похоже, что вы только что добавили сетевой сервис TARGETMACHINE в качестве администратора, а не для сетевой службы TFS.

Попробуйте добавить учетную запись машины TFS в список разрешений и посмотреть, работает ли она.

Если нет, посмотрите на этот смежный вопрос и посмотреть, если что-то помогает вам вообще: PSEXEC, access denied errors

+0

Отличное предложение. Мне удалось добавить учетную запись компьютера TFS Server в TARGETMACHINE (полный контроль), но все равно та же ошибка. Есть ли способ отслеживать на TARGETMACHINE, почему отказ в доступе? –