Содержание
Установка и удаление программ, чистка
Удалить Dameware client
Net Stop DWMRCS Net Stop DNTUS26 C:\Windows\dwrcs\DNTUS26.EXE -remove C:\Windows\dwrcs\DWRCS.EXE -remove
Удалить менеджер браузеров Яндекса
msiexec /X {42C06229-B704-4375-BF63-3E22FEAC736C} /quiet /norestart
Замена Яндекс-браузера в профиле на "корпоративный"
Яндекс.Браузер для организаций
Удалить ярлыки и папки из профиля пользователя:
rem Windows 7 и выше del "%appdata%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Yandex*" /q /f del "%userprofile%\Desktop\Yandex*" /q /f rmdir "%localappdata%\Yandex\YandexBrowser\Application" /s /q rmdir "%localappdata%\Yandex\YandexBrowser\Updates" /s /q rmdir "%localappdata%\Yandex\YaPin" /s /q rmdir "%appdata%\Microsoft\Windows\Start Menu\Programs\Yandex" /s /q # Перестроить кэш значков ie4uinit.exe -ClearIconCache rem Windows XP del "%userprofile%\Application Data\Microsoft\Internet Explorer\Quick Launch\Yandex*" /q /f del "%userprofile%\Рабочий стол\Yandex*" /q /f rmdir "%userprofile%\Local Settings\Application Data\Yandex\YandexBrowser\Application" /s /q rmdir "%userprofile%\Local Settings\Application Data\Yandex\Updater" /s /q rmdir "%userprofile%\Local Settings\Application Data\Yandex\YaPin" /s /q rmdir "%userprofile%\Главное меню\Программы\Yandex" /s /q
Если нужно удалить «корпоративный» Яндекс.Браузер:
wmic product where name="Yandex" call uninstall /nointeractive rem грохнуть сервис апдейтов - он остаётся после деинсталляции sc delete YandexBrowserService
Почистить временные папки в Windows 7 на удалённой машине
@echo off set /P COMP=Введите имя компьютера: set /P USER=Введите имя папки профиля пользователя: del "\\%COMP%\c$\users\%USER%\appdata\local\temp\*" /f /s /q del "\\%COMP%\c$\Users\%USER%\AppData\Local\Microsoft\Windows\Temporary Internet Files" /f /s /q dir "\\%COMP%\c$\Users\%USER%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" pause
Почистить временные папки в Windows XP на удалённой машине
@echo off set /P COMP=Введите имя компьютера: set /P USER=Введите имя папки профиля пользователя: del "\\%COMP%\c$\Documents and settings\%USER%\Local Settings\Temp\*" /f /s /q /a del "\\%COMP%\c$\Documents and settings\%USER%\Local Settings\Temporary Internet Files" /f /s /q /a dir "\\%COMP%\c$\Documents and settings\%USER%\Главное меню\Программы\Автозагрузка" pause
WMIC
Выгрузить список программ на удалённой машине
@echo off set /P COMP=Введите имя компьютера: rem Не помню, зачем это было нужно rem set DATESTAMP=%DATE:~10,4%_%DATE:~4,2%_%DATE:~7,2% rem set TIMESTAMP=%TIME:~0,2%_%TIME:~3,2%_%TIME:~6,2% rem set DATEANDTIME=%DATESTAMP%_%TIMESTAMP% wmic /node:"%COMP%" product list > %COMP%_programs_list.txt rem Более детализированный список rem wmic /node:"%COMP%" product list full > %COMP%_programs_list_full.txt
Удалить программу через WMIC
@echo off title Деинсталляция программ set /P COMP=Введите имя компьютера: rem По ID set /P PROG=Введите ID программы: wmic /node:%COMP% product where IdentifyingNumber="%PROG%" call uninstall /nointeractive rem По вендору wmic /node:%COMP% product where vendor="DocsVision" call uninstall /nointeractive rem По имени программы set /P PROG=Введите точное название программы (например, Adobe Acrobat 7.0 Professional): wmic /node:"%COMP%" product where name="%PROG%" call uninstall /nointeractive pause
Прочее
Узнать ОС и её разрядность на компьютере в домене
@echo off cls set /P COMP=Введите имя компьютера: wmic /node:"%COMP%" os get Caption,OSArchitecture pause
Вывести температуру процессора
Запускать с повышенными привилегиями
@echo off for /f "skip=1 tokens=2 delims==" %%A in ('wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature /value') do set /a "HunDegCel=(%%~A*10)-27315" echo %HunDegCel:~0,-2%.%HunDegCel:~-2% Degrees Celsius pause
Список процессов на удалённом компе
Прибить удалённый процесс
@echo off set /P COMP=Введите имя компьютера: set /P PROC=Введите имя процесса, который нужно завершить: taskkill /S %COMP% /F /IM %PROC% /T
Вызвать синий экран на удалённой машине
@echo off title BSOD set /P COMP=Введите имя компьютера: wmic /node:"%COMP%" process where name="csrss.exe" delete /nointeractive
Узнать версию IE
reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer" /v svcVersion
Файловые операции
Синхронизация определённой папки со множества компьютеров домена в одну папку на сервере
Архитектура решения определялась тем, что некоторые клиентские машины сидят в защищённой сети, что делает невозможным сбор логов с сервера, поэтому нужно сделать задачу на клиентских машинах.
Реализация
Сделана политика «Сбор логов» и одноимённая группа, куда добавлены пользователи и компьютеры, на которых установлена программа Some Platform. В политике создано задание для планировщика, привязанное к пользователю и запускающее программу nircmd.exe в папке NETLOGON, которая, в свою очередь, в невидимом режиме запускает скрипт, где robocopy сливает папку с логами на сервер, называя её в соответствии с логином пользователя.
Для того, чтобы этот велосипед работал, должна быть включена политика Loopback Detection в режиме Merge (в русской винде «Конфигурация компьютера/Шаблоны администрирования/Система/Групповая политика/Настройка режима обработки замыкания пользовательской групповой политики», режим слияния). Также, в задаче сделана проверка наличия папки Some Platform (нацеливание на элемент в свойствах задачи); если её нет, значит, задача работать не будет.
Строка запуска скрипта:
\\domain.ru\netlogon\nircmd.exe exec hide \\domain.ru\netlogon\someplatform-logs-sync.cmd
Сам скрипт (ключи после /MIR, полагаю, не нужны, но не стал убирать):
SET destination ="\\server\users-logs" robocopy "%userprofile%\Some Platform\SP7Client\logs" "%destination%\%username%" /MIR /ns /nc /nfl /ndl /np /njh /njs
Вариант на Powershell, брошен в связи с тем, что скрыть выполнение скриптов от пользователя без привлечения дополнительных программ всё равно не вышло:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -file "\\domain.ru\netlogon\someplatform-logs-sync.ps1"
$destination = "\\server\users-logs" New-Item -Path $destination\$env:username -type directory robocopy "$env:userprofile\Some Platform\SP7Client\logs" "$destination\$env:username" /MIR /ns /nc /nfl /ndl /np /njh /njs
Полная резервная копия одной папки в другую с меткой времени
SET source=%userprofile%\sourcefolder SET destination=%userprofile%\destinationfolder REM Выведет ГГГГ-ММ-ДД_чч-мм-сс SET mark=%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%-%time:~6,2% SET backupfolder=%destination%\backup_%mark% robocopy %source% %backupfolder% /MIR
Синхронизация папок с сетевого хранилища на USB-диск + ведение лога
$letter = E: $address = "192.168.1.5" $mark = get-date -UFormat "%Y-%m-%d_%H-%M-%S" ROBOCOPY \\$address\Distr $letter\Distr /MIR /XO /TEE /NP /LOG:sync_syn2usb_$mark.txt ROBOCOPY \\$address\Doc $letter\Doc /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt ROBOCOPY \\$address\English $letter\English /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt ROBOCOPY \\$address\music $letter\music /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt ROBOCOPY \\$address\photo $letter\photo /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt # Без папки xynoreport ROBOCOPY \\$address\Upload $letter\Upload /XD synoreport /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt ROBOCOPY \\$address\video $letter\video /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt
Проверка контрольных сумм
Используется Программа проверки целостности контрольной суммы (FCIV).
rem Сгенерировать fciv.exe -add G:\demofiles -wp -sha1 -xml G:\hashdb.xml rem Проверить fciv.exe -v -sha1 -xml G:\hashdb.xml rem Compute hashes: fciv.exe c:\mydir\myfile.dll fciv.exe c:\ -r -exc exceptions.txt -sha1 -xml dbsha.xml fciv.exe c:\mydir -type *.exe fciv.exe c:\mydir -wp -both -xml db.xml rem List hashes stored in database: fciv.exe -list -sha1 -xml db.xml rem Verifications: fciv.exe -v -sha1 -xml db.xml fciv.exe -v -bp c:\mydir -sha1 -xml db.xml
Verifying File Copy/Move Operations With Microsoft File Checksum Integrity Verifier
Powershell:
$usb = "E:\" $nas = "\\192.168.1.3" $mark = get-date -UFormat "%Y-%m-%d %H-%M-%S" Get-ChildItem $usb -Recurse | get-filehash -Algorithm md5 | Export-Csv -NoTypeInformation -Delimiter ';' -Encoding UTF8 "$env:userprofile\Desktop\$mark-usb.csv" Get-ChildItem $nas -Recurse | get-filehash -Algorithm md5 | Export-Csv -NoTypeInformation -Delimiter ';' -Encoding UTF8 "$env:userprofile\Desktop\$mark-nas.csv" $usbrep = Import-Csv "$env:userprofile\Desktop\$mark-usb.csv" -Delimiter ';' $nasrep = Import-Csv "$env:userprofile\Desktop\$mark-nas.csv" -Delimiter ';' Compare-Object -ReferenceObject $usbrep -DifferenceObject $nasrep -Property Hash # Если на экране будут какие-то хэши, значит, есть различия. pause
Подсчёт контрольных сумм долгий процесс, так что можно заменить проверку на размеры файлов, что гораздо быстрее.
$usb = "E:\" $nas = "\\192.168.1.3" $mark = get-date -UFormat "%Y-%m-%d %H-%M-%S" Get-ChildItem $usb -Recurse -File | select Directory,BaseName,Extension,Length,CreationTime,LastAccessTime,LastWriteTime,Attributes,IsReadOnly | Export-Csv -NoTypeInformation -Delimiter ';' -Encoding UTF8 "$env:userprofile\Desktop\$mark-usb.csv" Get-ChildItem $nas -Recurse -File | select Directory,BaseName,Extension,Length,CreationTime,LastAccessTime,LastWriteTime,Attributes,IsReadOnly | Export-Csv -NoTypeInformation -Delimiter ';' -Encoding UTF8 "$env:userprofile\Desktop\$mark-nas.csv" $usbrep = Import-Csv "$env:userprofile\Desktop\$mark-usb.csv" -Delimiter ';' $nasrep = Import-Csv "$env:userprofile\Desktop\$mark-nas.csv" -Delimiter ';' Compare-Object -ReferenceObject $usbrep -DifferenceObject $nasrep -Property Length | fl # Если на экране будут какие-то значения, значит, есть различия. pause
Учётные записи
Создать пользователя и поместить его в группу администраторов
net user userok P@ssw0rd! /add net localgroup Администраторы userok /add net localgroup Administrators userok /add
Справка
Переменные (FOR substitution modifiers)
The magic variables %n contains the arguments used to invoke the file: %0 is the path to the bat-file itself, %1 is the first argument after, %2 is the second and so on.
Since the arguments are often file paths, there is some additional syntax to extract parts of the path. ~d is drive, ~p is the path (without drive), ~n is the file name. They can be combined so ~dp is drive+path.
%~dp0 is therefore pretty useful in a bat: it is the folder in which the executing bat file resides.
You can also get other kinds of meta info about the file: ~t is the timestamp, ~z is the size.
Look here for a reference for all command line commands. The tilde-magic codes are described under for.
https://stackoverflow.com/questions/112055/what-does-d0-mean-in-a-windows-batch-file