У меня есть несколько машин с Windows 10 и Windows 7, которые работают удаленно. Иногда необходимо обновить определенные файлы или исполняемые файлы. Это может включать следующее.
- Закройте запущенную программу.
- Удалить текущий исполняемый файл
- Скопируйте новый исполняемый файл
- Замените (удалите и скопируйте) любые файлы по мере необходимости.
- Перезапустить программу
Мне было интересно, есть ли какое-то приложение, которое позволило бы мне контролировать это в отдельных системах (индивидуальное обновление) или во всех системах (массовое обновление).
решение1
Во-первых, конкретные рекомендации по программному обеспечению выходят за рамкиСуперпользователь. Пытатьсяhttps://softwarerecs.stackexchange.com/, вместо.
Однако вы можете написать простой пакетный скрипт, который сделает это, если есть центральный репозиторий с новыми файлами.
- Использоватьтасккиллдля остановки работающего приложения.
- Используйте копию* или лучше,робокопия, чтобы перезаписать старые файлы новыми (робокопиядавайте укажем дату, чтобы предотвратить перезаписьновеефайлы со старыми), указав полный путь UNC. Альтернативой было бы использованиеФТПилиСФТПдля переноса файлов. Копируя новые файлы поверх старых, вы фактически удаляете старые.
- Использоватьначинатькоманда для перезапуска приложения.
Конечно, есть и сложности:
- Под чьими учетными данными запускается каждое приложение? Ваш скрипт должен запускаться под теми же учетными данными при перезапуске приложения — если вы всегда используете System, то локальному пользователю будет трудно взаимодействовать с приложением. Для всех других целей скрипт может запускаться как System.
- Следует ли заменять приложениявсегдаперезапустить? Если вы хотите определить, запущен ли он в начале, проверьте результатытасккилли используйте это, чтобы определить, следует ли перезапускать.
- Для использования SFTP необходимо установить другие приложения на сервере и клиенте.
- Это было быоченьполезно для записи журнала работы скрипта.
решение2
В Windows встроены WMI (Windows Management Instrumentation) и WinRM (Windows Remote Management), они оба делают одно и то же, но с разной сетевой инфраструктурой. Также Windows может копировать файлы на другой компьютер так же, как вы копируете файлы на одном компьютере.
Этот пакетный файл предоставит вам текстовый файл со списком компьютеров, включенных в вашу сеть.
for /f "skip=3 delims=\" %%A in ('net view ^| findstr /v /C:"The command completed successfully"') do Echo %%A >> c:\computerlist.txt
Чтобы завершить все экземпляры процесса в сети
wmic /node:@c:\computerlist.txt process where "name='notepad.exe'" call terminate
Для копирования файлов. C$ — это скрытый административный ресурс, который могут использовать только администраторы.
copy c:\somefolder\file.exe \\127.0.0.1\C$\Somefolder\file.exe
Смотрите for /?
, как сделать цикл вышекомпьютерный список.txt. Поместите следующую строку в пакетный файл. Удалите часть echo, чтобы что-то сделать.
for /f "usebackq delims=" %%A in ("C:\Folder\computerlist.txt.txt") do echo copy "c:\folder\file.exe" "\\%%A\C$\folder\file.exe
Нет смысла удалять и копировать.
Чтобы запустить невидимый процесс на удаленном компьютере (он будет виден, если запущен на локальном компьютере). Здесь мы указываем один компьютер, а не текстовый файл компьютеров.
wmic /node:127.0.0.1 process call create "c:\\windows\\notepad.exe"
Для справки введите for /?
, wmic /?
, wmic process get /?
, wmic process call /?
. Также wmic /format /?
и wmic /node /?
.