Как я могу использовать PsExec для установки программного обеспечения на удаленный компьютер

Вот некоторые подробности

  1. Удаленный ПК может не иметь администратора.
  2. Программное обеспечение находится в сетевой папке, доступной для всех пользователей.
  3. PsExec находится на машине администратора

Я пытался сделать это, но я получаю "Неверный каталог" или "Система не может найти указанный путь"

psexec \\REMOTEPC1 -w "C:\temp\installRF" "setup.exe /unattended=true /quiet=true /allowShutdown=false /add="FaxUtil,FaxCtrl" /rightFaxServer="faxserver1" /log:whyme"

1 ответ

Несколько соображений при удаленной установке приложений:

1) Для установки потребуется взаимодействие с пользователем?
2) Каким пользователем вы пользуетесь для установки программного обеспечения?
3) Имеет ли тот же пользователь, которого вы используете для установки программного обеспечения, сопоставления дисков и / или доступ для чтения данных сетевого хранилища?


Имея это в виду, я рекомендую следующий подход.

1. Создайте скрипт для копирования всей папки установки в локальную систему
2. Запустите приложение установки локально, используя системную учетную запись

У меня есть некоторый код, который я построил с powershell некоторое время назад, вот соответствующие строки кода, которые вас заинтересуют:

    $computername=read-host "type in a computername"
    mkdir \\$computername\c$\MyAppInst
    copy-item  "X:\Software\App1\setup.exe"  "\\$computername\c$\MyAppInst"
    start-process "psexec.exe" -args "-accepteula -s -d -i 0 \\$ComputerName wscript.exe C:\MyAppInst\install.vbs" -passthru

Я создал свою собственную оболочку vbscript, прежде чем начать установку приложения, потому что я не думаю, что psexec может правильно обрабатывать все параметры установки.

В моем случае мы должны были выполнять резервное копирование USMT (scanstate) удаленно. Вот VB-код, который мы использовали (очищенный с указанием информации о компании). Мне нравится использовать escape-символ двойной кавычки в vb (это chr(34)), чтобы облегчить поиск и устранение неисправностей. Еще одна веская причина, по которой я помещаю все в переменную, заключается в том, что я могу wscript.echo эту переменную и посмотреть, что именно запускается.

Set objShell = WScript.CreateObject("WScript.Shell")
fileExecutablePath=chr(34) & "C:\Desktop Tools\USMTv2\scanstate.exe" & chr(34)

fileExecutableSwitches=" " & chr(34) & "\\server\migration_data\" & objShell.Environment("PROCESS").Item("COMPUTERNAME") & chr(34) & " /c /localonly /ue:MYDOMAIN\* /ue:" & objShell.Environment("PROCESS").Item("COMPUTERNAME") & "\*" & " /uel:7 /config:" & chr(34) & "C:\Desktop Tools\USMTv2\config.xml" & chr(34) & " /i:" & chr(34) & "C:\Desktop Tools\USMTv2\migapp-CompanyAppsOnly.xml" & chr(34) & " /i:" & chr(34) & "C:\Desktop Tools\USMTv2\migdocs-Company.xml" & chr(34) & " /l:" & chr(34) & "\\server\migration_data\" & objShell.Environment("PROCESS").Item("COMPUTERNAME") & "\" & objShell.Environment("PROCESS").Item("COMPUTERNAME") & "_usmtBACKUP.log" & chr(34) & " /v:13 /targetWindows7"

return=objShell.Run(fileExecutablePath & fileExecutableSwitches, 0, true)

wscript.echo "Your local data has been backed up. This data will be transferred to your new computer. Anything you now save locally will not be transferred."
Другие вопросы по тегам