Инструменты пользователя

Инструменты сайта


scripts:cmd

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
scripts:cmd [22.03.2019 11:16] – [Проверка контрольных сумм] viacheslavscripts:cmd [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +===== Установка и удаление программ, чистка =====
 +==== Удалить Dameware client ====
 +<code dos>
 +Net Stop DWMRCS
 +Net Stop DNTUS26
 +C:\Windows\dwrcs\DNTUS26.EXE -remove
 +C:\Windows\dwrcs\DWRCS.EXE -remove
 +</code>
 +
 +
 +==== Удалить менеджер браузеров Яндекса ====
 +FIXME
 +<code dos>
 +msiexec /X {42C06229-B704-4375-BF63-3E22FEAC736C} /quiet /norestart
 +</code>
 +==== Замена Яндекс-браузера в профиле на "корпоративный" ====
 +[[https://browser.yandex.ru/corp/|Яндекс.Браузер для организаций]]
 +
 +Удалить ярлыки и папки из профиля пользователя:
 +<code dos>
 +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
 +</code>
 +
 +Если нужно удалить "корпоративный" Яндекс.Браузер:
 +<code dos>
 +wmic product where name="Yandex" call uninstall /nointeractive
 +rem грохнуть сервис апдейтов - он остаётся после деинсталляции
 +sc delete YandexBrowserService
 +</code>
 +==== Почистить временные папки в Windows 7 на удалённой машине ====
 +<code dos>
 +@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
 +</code>
 +
 +==== Почистить временные папки в Windows XP на удалённой машине ====
 +<code dos>
 +@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
 +</code>
 +===== WMIC =====
 +==== Выгрузить список программ на удалённой машине ====
 +<code dos>
 +@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
 +</code>
 +
 +==== Удалить программу через WMIC ====
 +<code dos>
 +@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
 +</code>
 +
 +===== Прочее =====
 +==== Узнать ОС и её разрядность на компьютере в домене ====
 +<code dos>
 +@echo off
 +cls
 +set /P COMP=Введите имя компьютера:
 +wmic /node:"%COMP%" os get Caption,OSArchitecture
 +pause
 +</code>
 +
 +==== Вывести температуру процессора ====
 +Запускать с повышенными привилегиями
 +<code dos>
 +@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
 +</code>
 +==== Список процессов на удалённом компе ====
 +<code dos>
 +@echo off
 +set /P COMP=Введите имя компьютера:
 +tasklist /S %COMP%
 +pause
 +</code>
 +
 +==== Прибить удалённый процесс ====
 +<code dos>
 +@echo off
 +set /P COMP=Введите имя компьютера:
 +set /P PROC=Введите имя процесса, который нужно завершить:
 +taskkill /S %COMP% /F /IM %PROC% /T
 +</code>
 +
 +==== Вызвать синий экран на удалённой машине ====
 +<code dos>
 +@echo off
 +title BSOD
 +set /P COMP=Введите имя компьютера:
 +wmic /node:"%COMP%" process where name="csrss.exe" delete /nointeractive
 +</code>
 +
 +==== Узнать версию IE ====
 +<code dos>
 +reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer" /v svcVersion
 +</code>
 +
 +===== Файловые операции =====
 +==== Синхронизация определённой папки со множества компьютеров домена в одну папку на сервере ====
 +Архитектура решения определялась тем, что некоторые клиентские машины сидят в защищённой сети, что делает невозможным сбор логов с сервера, поэтому нужно сделать задачу на клиентских машинах. 
 +
 +=== Реализация ===
 +Сделана политика "Сбор логов" и одноимённая группа, куда добавлены пользователи и компьютеры, на которых установлена программа Some Platform. В политике создано задание для планировщика, привязанное к пользователю и запускающее программу nircmd.exe в папке NETLOGON, которая, в свою очередь, в невидимом режиме запускает скрипт, где robocopy сливает папку с логами на сервер, называя её в соответствии с логином пользователя.
 +
 +Для того, чтобы этот велосипед работал, должна быть включена политика Loopback Detection в режиме Merge (в русской винде "Конфигурация компьютера/Шаблоны администрирования/Система/Групповая политика/Настройка режима обработки замыкания пользовательской групповой политики", режим слияния). Также, в задаче сделана проверка наличия папки Some Platform (нацеливание на элемент в свойствах задачи); если её нет, значит, задача работать не будет. 
 +
 +Строка запуска скрипта:
 +<code dos>
 +\\domain.ru\netlogon\nircmd.exe exec hide \\domain.ru\netlogon\someplatform-logs-sync.cmd
 +</code>
 +
 +Сам скрипт (ключи после /MIR, полагаю, не нужны, но не стал убирать):
 +<code dos>
 +SET destination ="\\server\users-logs"
 +robocopy "%userprofile%\Some Platform\SP7Client\logs" "%destination%\%username%" /MIR /ns /nc /nfl /ndl /np /njh /njs
 +</code>
 +
 +Вариант на Powershell, брошен в связи с тем, что скрыть выполнение скриптов от пользователя без привлечения дополнительных программ всё равно не вышло:
 +<code powershell>
 +%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -file "\\domain.ru\netlogon\someplatform-logs-sync.ps1"
 +</code>
 +
 +<code powershell>
 +$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
 +</code>
 +==== Полная резервная копия одной папки в другую с меткой времени ====
 +<code dos>
 +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
 +</code>
 +
 +==== Синхронизация папок с сетевого хранилища на USB-диск + ведение лога ====
 +<code powershell>
 +$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
 +</code>
 +
 +==== Проверка контрольных сумм ====
 +Используется [[https://support.microsoft.com/ru-ru/help/841290/availability-and-description-of-the-file-checksum-integrity-verifier-u|Программа проверки целостности контрольной суммы]] (FCIV).
 +<code dos>
 +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
 +</code>
 +[[https://www.bobpusateri.com/archive/2013/02/verifying-file-copymove-operations-with-microsoft-file-checksum-integrity-verifier/|Verifying File Copy/Move Operations With Microsoft File Checksum Integrity Verifier]]
 +
 +Powershell:
 +<code 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
 +</code>
 +
 +Подсчёт контрольных сумм долгий процесс, так что можно заменить проверку на размеры файлов, что гораздо быстрее.
 +<code powershell>
 +$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
 +</code>
 +
 +===== Учётные записи =====
 +==== Создать пользователя и поместить его в группу администраторов ====
 +<code dos>
 +net user userok P@ssw0rd! /add
 +net localgroup Администраторы userok /add
 +net localgroup Administrators userok /add
 +</code>
 +
 +===== Справка =====
 +==== Переменные (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 [[http://technet.microsoft.com/en-us/library/bb490890.aspx|here]] for a reference for all command line commands. The tilde-magic codes are described under [[http://technet.microsoft.com/en-us/library/bb490909.aspx|for]].
 +
 +https://stackoverflow.com/questions/112055/what-does-d0-mean-in-a-windows-batch-file
 +
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki