Мы собираемся установить какое-то новое программное обеспечение практически на все наши компьютеры, и я пытаюсь настроить для этого GPO. Мы используем контроллер домена Windows Server 2008 R2, и все наши машины работают под управлением Windows 7.
Объект групповой политики вызывает следующий сценарий, который находится в общей сетевой папке на нашем файловом сервере. Сам сценарий вызывает исполняемый файл, который находится в другом сетевом ресурсе на другом сервере. Исполняемый файл немедленно выйдет из строя с ошибкой 0x0000006
. Журнал событий просто говорит следующее: Windows cannot access the file for one of the following reasons: there is a problem with the network connection, the disk that the file is stored on, or the storage drivers installed on this computer; or the disk is missing. Windows closed the program Setup.exe because of this error.
Вот сценарий (который хранится на \\WIN2K8R2-F-01\Remote Applications
):
@ECHO OFF
IF DEFINED ProgramFiles(x86) (
ECHO DEBUG: 64-bit platform
SET _path="C:\Program Files (x86)\Canam"
) ELSE (
ECHO DEBUG: 32-bit platform
SET _path="C:\Program Files\Canam"
)
IF NOT EXIST %_path% (
ECHO DEBUG: Folder does not exist
PUSHD \\WIN2K8R2-PSA-01\PSA Data\Client
START "" "Setup.exe" "/q"
POPD
) ELSE (
ECHO DEBUG: Folder exists
)
Запуск сценария вручную от имени администратора также приводит к той же ошибке. Настройка ярлыка с той же целью и параметрами работает отлично. Также работает вызов исполняемого файла вручную.
Не уверен, имеет ли это значение, но установщик основан на dotNETInstaller. Но я не знаю, какая версия.
Буду признателен за любые предложения по исправлению этого. Заранее спасибо!
ОБНОВИТЬ
Я очень сомневаюсь, что это имеет значение, но общий сетевой ресурс, на котором размещен сценарий, является общим диском, а общий сетевой ресурс, ссылки на скрипты для исполняемого файла - это общая папка.
Кроме того, обе акции имеют Domain Computers
перечислены с полным доступом к вкладкам общего доступа и безопасности. И PUSHD
работает без заключения пути в кавычки.
ОБНОВЛЕНИЕ 2
Если я вручную открою CMD на клиентском компьютере и введу PUSHD "\\WIN2K8R2-PSA-01\PSA Data\Client"
Я правильно смонтировал каталог как диск. Если я тогда войду START "" "Setup.exe" "/q"
программа установки запустится точно так, как должна, и фактически установит приложение.
ОБНОВЛЕНИЕ 3
Выполняя отладку через ECHO
заявления, я начал выводить TXT
файлы в C:\
диск на клиентской машине. После того, как я позвонил PUSHD
я ECHO
ред %CD%
чтобы увидеть текущий каталог. В итоге получилось C:\Windows
не {?}:\Client
как и должно быть, если он успешно смонтировал удаленный каталог.
Я думаю, это как-то связано с сообщениями, которые я получаю в самом верху экрана, о том, что пути UNC не поддерживаются, бла-бла-бла, хотя остальная часть скрипта фактически выполняется.
Все еще ищу предложения, как заставить это работать.
Похоже на проблему с разрешением. Если вы делаете это в сценарии запуска, он будет работать как SYSTEM
. Вам нужно будет дать Domain Computers
доступ для чтения к месту хранения файлов.
Ставьте кавычки вокруг пути к акциям. У вас есть пробел в имени общего ресурса, и я предполагаю, что это причина проблемы.
Предложения, которые могут вам помочь.
1)
Вы можете использовать psexec sysinternal, чтобы открыть окно cmd как СИСТЕМУ для отладки "psexec \ 127.0.0.1 / s cmd". Оттуда вы можете пройтись по сценарию "построчно", чтобы увидеть, где он не работает.
2)
Вы можете изменить сценарий так, чтобы он запускался в текущем каталоге с префиксом "% ~ dp0".
Вы пробовали пропустить команду СТАРТ?
PUSHD \ WIN2K8R2-PSA-01 \ Данные PSA \ Клиент
% ~ dp0Setup.exe "" / q "
Проблема в том, что вы выскочили до завершения настройки. Это потому, что cmd запускает установку и сразу же продолжает команду popd.
Use start "" Setup.exe /wait /q
вы также можете использовать путь UNC. Может, вам нужны цитаты.
start "Setup title" "\\server\share\folder\setup.exe" /q