Powershell: удаленная установка exe

У меня проблемы с моим скриптом, предназначенным для удаленной установки исполняемого файла. Все предварительные действия моего скрипта работают просто отлично. Я беру имена хостов примерно дюжины компьютеров из текстового файла. Я использую PSExec для Enable-PSRemoting. Затем программа установки копируется во временный каталог на удаленном компьютере. Все работает отлично, кроме важной части. Я просто не могу заставить его установить.

Я пробовал следующее:

 Invoke-Command -ComputerName remoteComp -ScriptBlock {C:\temp\installer.exe} -ArgumentList /SILENT
 Invoke-Command -ComputerName remoteComp {Start-Process C:\temp\installer.exe -ArgumentList /SILENT -Wait}

Я пробовал использовать New-PSSession следующим образом:

 $s = New-PSSession -ComputerName remoteComp
 Invoke-Command -Session $s -ScriptBlock {C:\temp\installer.exe} -ArgumentList /SILENT

Никто не отправляет какие-либо ошибки, они просто ничего не делают. Команды с -Wait просто зависают навсегда. Если я поставлю -Sleep, он просто подождет запрошенные секунды, а затем завершит работу, ничего не выполнив. Я не знаю, имеет ли это значение, но когда я запускаю исполняемый файл на локальном компьютере с переключателем /SILENT, он не запрашивает никаких подсказок, но открывает окно проводника.

Я пытался использовать PSExec.exe, но получил аналогичный результат. Он просто висит навсегда без каких-либо ошибок. Заранее благодарю за любую помощь!


person Jeff Godzilla    schedule 16.03.2017    source источник
comment
Я пробовал это на разных установщиках, некоторые работают в зависимости от уровня UAC. В итоге я написал что-то для выполнения создания запланированной задачи на целевой машине, которая запускает пакетный файл со всеми моими командами автоматической установки. SCHTASKS   -  person ATek    schedule 17.03.2017
comment
в примерах блока сценариев вы не передаете параметр своему exe. -ScriptBlock {C:\temp\installer.exe $args[0]} -ArgumentList /SILENT хотя может быть и больше. Это объясняет, почему это продолжается вечно, поскольку он не может взаимодействовать ни с одним пользователем. Существует бесплатное программное обеспечение, которое может справиться с такими вещами, как PDQ Deploy, вместо того, чтобы пытаться создать свой собственный файл fyi.   -  person Matt    schedule 17.03.2017
comment
Появляющееся окно проводника может быть причиной того, что процесс установки не завершается, что объясняет, почему при использовании -Wait он никогда не заканчивается. Вы можете проверить это на локальном компьютере... откройте Диспетчер задач и запустите программу установки с автоматическим переключением, быстро найдите процесс installer.exe в Диспетчере задач. Когда установщик открывает окно проводника, процесс installer.exe исчезает?   -  person James C.    schedule 17.03.2017


Ответы (2)


попробуйте список аргументов внутри... если exe его поддерживает.

ex:

Invoke-Command -ScriptBlock { c:\temp\yourexe.exe /verysilent /norestart /log="c:\install.log"}

Пожалуйста, попробуй.

person VGSandz    schedule 17.03.2017
comment
К сожалению, этот exe не поддерживает /verysilent - person Jeff Godzilla; 17.03.2017
comment
попробуйте /silent вместе с exe, если /verysilent не поддерживается - person VGSandz; 17.03.2017

Поборовшись с этой штукой еще немного, я смог успешно установить exe, создав пакетный файл, а затем используя

 Invoke-Command -ComputerName remoteComp -ScriptBlock {C:\temp\installer.bat}

Все, что есть в командном файле

 installer.exe /SILENT

Еще один способ, который сработал для меня, был упомянут ssaviers, я мог использовать schtasks.exe для планирования одноразовой задачи.

person Jeff Godzilla    schedule 17.03.2017
comment
Меня тоже игнорировали... пока я не нашел это :-) нужно пометить как правильный ответ! - person Guy Wood; 09.12.2019