2015-04-14 2 views
2

Я пытаюсь автоматизировать установку одного из моих приложений, но столкнулся с несколькими блокпостами, и мне действительно нужна помощь.Автоматизация установки с использованием сценариев BAT/PS

В настоящее время мы используем технологию KACE от Dell, чтобы подтолкнуть установщика к локальным машинам. Установщик запускается как пользователь SYSTEM, что означает, что он не имеет и не может иметь прямого доступа к сетевым ресурсам (относится к ним позже).

установка рабочего процесса

Приложение выглядит следующим образом:
Stop Local Security Services, чтобы установить программное обеспечение
Удалите все отображенный на диск букву X
Карта сетевой диск X \ тест \ тест
TestApp.exe/с
Msiexec/я Test.msi/тихо
Начало Услуги Локальной безопасности, чтобы установить программное обеспечение
скопировать файл ярлыка на рабочем стол

установки ИЦЭ lf имеет 1 исполняемый файл и 1 MSI, которые должны быть запущены. EXE устанавливает приложение для мэйнфреймов. Файл MSI устанавливает несколько файлов локально, а затем регистрирует 6 DLL-файлов, расположенных на этом подключенном диске.

В этом случае проблема заключается в том, что эти файлы ДОЛЖНЫ быть на этом общем диске, а программа установки работает как SYSTEM -> Учетная запись учетной записи системы не может получить доступ к подключенному диску для регистрации файлов, чтобы установка завершилась с ошибкой.

Меня также ограничивает тот факт, что я не могу просто сохранить имя пользователя/пароль в виде открытого текста в пакетном файле.

Вот мой код до сих пор:

REM Stopping McAfee Services 
echo Stopping McAfee Services. 
net stop mcshield 
net stop mcafeeframework 

REM Map Network Drive 
echo Mapping Network Drive 
net use X: /delete /y 
net use X: \\test\test 

(Here is where I need help - Is there a way to force a username/password prompt here for the user? I basically just want the user to authenticate to the X drive mapping, which will allow the installation to move forward) 

echo Starting Test 1 Installation 
Test1.exe /s /v"/qb" 
echo Starting Test 2 Installation 
msiexec /i Test2.msi /quiet 
(If the drive has not been mapped by this point, the installation fails as the SYSTEM account can't access the drive) 

echo. 

REM Restarting Mcafee Services 
echo Starting McAfee Services. 
net start mcshield 
net start mcafeeframework 
echo. 

REM Copy Shortcut 
xcopy "shortcut\*" "C:\Users\public\desktop" 

В качестве альтернативы,

Может/я должен преобразовать это в PS сценарий? Я знаю, что PS более мощный, чем пакет, но не знал, как это сделать.

+0

В Powershell вы можете использовать 'New-PSDrive' с параметром' -credential' для сопоставления диска. Однако, если это должно быть без присмотра, которое бы не обходилось, чтобы хранить учетные данные в обычном тексте. Разве невозможно запустить все это под другой учетной записью? – arco444

+0

Насколько мне известно.Мы ограничены либо запуском скрипта, либо пользователем системы, либо отсутствием доступа к общему диску или пользователю, но у пользователя нет прав администратора для запуска установки. В нашей нынешней среде невозможно поднять пользователя до администратора. На стороне примечания. Пока я работал над преобразованием этого сценария powershell, я обнаружил, что параметры New-PSDrive, такие как -credential и -persist, не работают (я получал недопустимые ошибки параметров в PS). –

+0

Помимо того, что X-диск является сетевым и недоступен для системной учетной записи, я не вижу, как приложение будет работать в любом случае. Буквы дисков отображаются в контексте профиля пользователя (а не всей системы), поэтому, если вы зарегистрируете файлы на этом диске с определенной учетной записью, они не будут видны другой учетной записи. Может быть, каждый пользователь обращается к нему через имя общего ресурса, а не букву диска? Групповая политика - это общее решение для вашего сценария и позволяет избежать проблемы, запустив учетные данные, которые могут быть добавлены для установки в случае необходимости. – PhilDW

ответ

0

Если заставляя аутентификации запрос, вы имеете в виду то, что потребуется человеческий вход (и вы не используете этот сценарий удаленно), то эта линия должна взаимодействовать с существующей сессии входа в систему и задать учетные данные:

start explorer \\test\test 
echo After you have entered network credentials 
pause 

После того, как пользователь вводит годные, оставшийся сценарий может продолжить

net use X: \\test\test 
+0

, так что я не уверен, что explorer \\ test \ test действительно делает что-то другое, чем оригинальный скрипт. На самом деле, я не вижу, чтобы это вообще делало что-то. Между моей линией, которая удаляет любое существующее соединение и мое сетевое использование X: line, теперь происходит просто массивная пауза, где ничего не происходит в течение 45 секунд или около того, тогда она просто движется дальше. Net Use вызывает подсказку в CMD, чтобы вводить имя пользователя и пароль, но не зацикливается на недопустимых кредитах - мне нужно, чтобы он зацикливался до тех пор, пока пользователь не введет кредиты. –

+0

Теперь я не понимаю, на 2 фронтах. Выполняется ли ваш сценарий с интерактивного сеанса (т. Е. С сеансом входа в систему - пользовательский интерфейс и все)? Строка проводника \\ test \ test должна была запрашивать учетные данные, если кто-то контролирует сеанс. Если он не контролируется, удалите эту строку. Затем вы уже знаете учетные данные для \\ test \ test? Если сохранение в качестве переменных среды будет работать, использование сети X: \\ test \ test/user:% network_username%% network_password% даст вам сопоставление. –

+0

Да, он запускается с интерактивной сессии - хотя мы хотим, чтобы установка была максимально тихой. Сохранение имени пользователя/пароля в виде простого текста не является вариантом. «explorer» ничего не сделал для меня в этом скрипте, сценарий, казалось, просто игнорировал эту строку и перешел к использованию сети. Используя сетевое использование, я могу получить CMD для запроса идентификатора сети и пароля, но проверки нет. Если пользователь вводит неверный идентификатор/пароль, установка просто терпит неудачу. Нам нужна часть учетных данных для цикла до успешной аутентификации. –

0

После поигрывая с идеями об этой проблеме в течение нескольких недель, я решил принять новый подход.

Я создал новый командный файл с использованием простого NET USE и передал учетные данные учетной записи службы w/access к сетевому ресурсу в виде обычного текста. Затем я скомпилировал пакет в исполняемый файл. Это не самое элегантное решение, я уверен, но этого достаточно для наших потребностей в настоящее время.

Спасибо за помощь всем!

Смежные вопросы