Вопрос или проблема
Вот скрипт, который я составил:
@echo off
REM Этот файл предполагает, что у вас установлен psexec
REM Запросите имя машины или IP
set /p machine= Пожалуйста, введите имя машины или ip:
REM проверьте, что рабочая станция онлайн, если нет, выход
ping %machine% | find "Reply"
if errorlevel 1 goto :offline
if errorlevel 0 goto :install
:offline
echo Рабочая станция не онлайн
pause
exit
:install
xcopy "w:\*****\*****\psexec.exe" \\%machine%\c$\windows\system32
xcopy "w:\*****\*****\*****\*****\fix.reg" \\%machine%\c$\temp
PsExec -s -i \\%machine% -u domainadmin \\%machine%\c$\windows\regedit.exe -i "c:\temp\fix.reg"
pause
<< Рег файл fix.reg>>
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
Скрипт работает до того момента, когда он скопировал файлы с сети на удаленный компьютер. Затем меня просят ввести пароль от доменного администратора, PsExec
запускается, и я получаю сообщение:
Не удалось запустить службу PsExec на Computername: Система не может найти указанный файл.
Я могу запустить .reg файл, подключившись к компьютеру по удаленному доступу и дважды щелкнув по нему, но должен быть способ заставить PsExec запустить его удаленно.
\\%machine%\c$\temp\fix.reg psexec -s \\%machine%\c$\windows\system32\reg.exe
Первая половина этой строки работает правильно, она запускает reg файл, но вместо обновления реестра на целевом компьютере обновляет реестр на моем локальном ПК, кто-нибудь видит проблему?
PsExec.exe -s \\%machine% -u domainadmin C:\windows\system32\cmd.exe /C c:\windows\system32\reg.exe IMPORT c:\temp\fix.reg
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что сервис PsExec не может быть запущен на удалённом компьютере. В результате возникает сообщение об ошибке: "Could not start PsExec service on Computername: The system cannot find the file specified". Давайте разберёмся в основах этой проблемы и представим возможные пути её решения.
1. Причины возникновения проблемы
Ошибка, о которой идёт речь, может быть вызвана несколькими факторами:
-
Неправильный путь к PsExec: Убедитесь, что файл
psexec.exe
был успешно скопирован на удалённый компьютер в нужное место. В вашем скрипте используется путь\\%machine%\c$\windows\system32
, проверьте, содержит ли удалённый компьютер этот файл в указанной директории. -
Некорректные права доступа: Убедитесь, что у вас есть необходимые права для запуска служб на удалённом компьютере. Пользователь, от имени которого вы выполняете PsExec, должен иметь права администратора на целевом компьютере.
-
Антивирусное ПО или брандмауэр: Иногда антивирусные решения или настройки брандмауэра могут блокировать работу PsExec. Проверьте настройки безопасности на удалённой машине.
2. Проведение предварительных проверок
Прежде чем продолжить, выполните несколько проверок:
-
Проверка доступности: С помощью команды
ping %machine%
уже сделана проверка доступности, однако также убедитесь, что удалённый компьютер настроен для приема соединений по SMB. -
Копирование файла: После выполнения команды
xcopy
, убедитесь, что файл PsExec действительно доступен на удалённом компьютере.dir \\%machine%\c$\windows\system32\psexec.exe
3. Правильный запуск PsExec
Ваш приведённый код имеет небольшую ошибку в синтаксисе при вызове reg.exe
. Давайте исправим:
PsExec.exe -s \\%machine% -u domainadmin -p password C:\Windows\system32\reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "YourKeyName" /t REG_SZ /d "YourValue" /f
4. Альтернативные подходы
Если предыдущий метод не сработал, вы можете создать специфическую команду через PsExec, чтобы выполнить нужный импорт реестра:
PsExec.exe -s -u domainadmin -p password \\%machine% cmd /C reg import c:\temp\fix.reg
Обратите внимание, что передача пароля напрямую в командной строке может быть небезопасной, учитывайте возможность использования безопасных методов аутентификации.
5. Замечания по безопасности
-
Используйте защищенные соединения: Вместо передачи пароля в открытом виде, рассмотрите возможность использования Kerberos аутентификации или других безопасных методов.
-
Логирование и мониторинг: Ведите логирование всех операций, связанных с удалённым подключением и изменениями реестра, для обеспечения безопасности и аудита.
Заключение
Проблема с запуском PsExec может быть решена через корректировку путей, проверку прав доступа и использование правильных команд для импорта в реестр. Проведите все необходимые проверки, и вы сможете успешно настроить функционирование вашего скрипта.