on error resume next
SID = inputBox("Введите SID: ", "GetUserBySID")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objAccount = objWMIService.Get("Win32_SID.SID='" & SID & "'")
if err <> 0 then
msgbox "SID не найден!"
else
user = objAccount.AccountName
domain = objAccount.ReferencedDomainName
ret = inputbox("SID: " & SID & vblf & _
"Binary: " & Join(objAccount.BinaryRepresentation, ",") & vblf & _
"Domain: " & Domain & vblf & _
"UserName: " & user, "GetUserBySID - ответ", _
domain & "\" & user)
end if
@echo off
SetLocal EnableExtensions
call :GetSystemVersion "OSVer" "Core" "Build" "Family" "EnvironCore"
echo Версия ОС: %OSVer%
echo Рязрядность ОС: %Core%
echo Сборка: %Build%
echo Семейство: %Family%
echo Разрядность среды запуска Batch: %EnvironCore%
pause
Exit /B
:GetSystemVersion [OSVersion] [OSCore] [OSBuild] [OSFamily] [EnvironmentCore]
:: Определить версию ОС
:: %1-исх.Переменная для хранения названия ОС
:: %2-исх.Переменная для хранения разрядности ОС
:: %3-исх.Переменная для хранения версии сборки ОС
:: %4-исх.Переменная, идентифицирующая семейство ОС (9x, NT, Vista)
:: %5-исх.Переменная, идентифицирующая разрядность среды, из-под которой запущен скрипт
Set "xOS=x64"& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set "xOS=x32"
set "%~2=%xOS%"
set "%~5=x32"& if "%xOS%"=="x64" echo "%PROGRAMFILES%" |>nul find "x86" || set "%~5=x64"
set "_key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "CurrentBuildNumber"^|Find "CurrentBuildNumber"') do set "%~3=%%~b"
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "CurrentVersion"^|Find "CurrentVersion"') do set "_ver=%%~b"
For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "ProductName"^|Find "ProductName"') do set "%~1=%%~b"
if "%_ver:~0,1%"=="6" (set "%~4=Vista") else (set "%~4=NT")
Exit /B
GetObject("winmgmts:\\.\root\default:Systemrestore").CreateRestorePoint "SafeZone.cc", 10, 100
WMIC /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "SafeZone.cc", 100, 10
$sysrestore = [wmiclass]"\\.\root\default:systemrestore"
$sysrestore.CreateRestorePoint("MyRestorePoint", 0, 100)
Dim LastRP
Set SRP = GetObject("winmgmts:\\.\root\default").InstancesOf("SystemRestore")
For Each objRP In SRP
LastRP = objRP.SequenceNumber
Next
If Not IsEmpty(LastRP) Then
GetObject("winmgmts:\\.\root\default:SystemRestore").Restore LastRP
Set OS = GetObject("winmgmts:{(Shutdown)}\\.\root\cimv2").ExecQuery("SELECT * FROM Win32_OperatingSystem WHERE Primary = True")
For Each objOS In OS
objOS.Reboot
Next
End If
rd "\\?\c:\temp\badfolder..\"
@echo off
SetLocal EnableExtensions
chcp 862 >NUL
set "Cur=%~dp0"
set "Cur=%Cur:~0,-1%"
set "log_txt=%Cur%\DirX.log"
set "log_csv=%Cur%\DirX.csv"
2>NUL del "%log_txt%"
2>NUL del "%log_csv%"
echo Type;Dir /X (8.3);Real Name;>>"%log_csv%"
call :DirRec "%Cur%" "%Cur%"
pause
exit /B
:DirRec [папка]
For /F "skip=5 tokens=1-6" %%A in ('Dir /X /A /OS /-C "%~1" 2^>NUL') do (
if "%%B" NEQ "File(s)" if "%%B" NEQ "Dir(s)" (
if "%%C"=="<DIR>" (
if "%%D" NEQ "." if "%%D" NEQ ".." (
if "%%E"=="" (
echo DIR "%~1\%%D" "%~1\%%D">> "%log_txt%"
echo DIR ;"%~1\%%D";"%~1\%%D">> "%log_csv%"
) else (
echo DIR "%~2\%%E" "%~1\%%D">> "%log_txt%"
echo DIR ;"%~2\%%E";"%~1\%%D">> "%log_csv%"
)
call :DirRec "%~1\%%D" "%~2\%%E"
)
) else (
if "%%E"=="" (
echo FILE "%~2\%%D" "%~1\%%D">> "%log_txt%"
echo FILE;"%~2\%%D";"%~1\%%D">> "%log_csv%"
) else (
echo FILE "%~2\%%E" "%~1\%%D">> "%log_txt%"
echo FILE;"%~2\%%E";"%~1\%%D">> "%log_csv%"
)
)
)
)
Exit /B
DIR "H:\_CMD\_AntiHidden\1.." "H:\_CMD\_AntiHidden\1F85C~1"
DIR "H:\_CMD\_AntiHidden\1..\2.." "H:\_CMD\_AntiHidden\1F85C~1\2ECCD~1"
DIR "H:\_CMD\_AntiHidden\1..\2..\3.." "H:\_CMD\_AntiHidden\1F85C~1\2ECCD~1\3B2F7~1"
FILE "H:\_CMD\_AntiHidden\1..\2..\3..\PsExec.exe" "H:\_CMD\_AntiHidden\1F85C~1\2ECCD~1\3B2F7~1\PsExec.exe"
FILE "H:\_CMD\_AntiHidden\1..\Procmon.exe" "H:\_CMD\_AntiHidden\1F85C~1\Procmon.exe"
DIR "H:\_CMD\_AntiHidden\s" "H:\_CMD\_AntiHidden\s"
DIR "H:\_CMD\_AntiHidden\hs" "H:\_CMD\_AntiHidden\hs"
DIR "H:\_CMD\_AntiHidden\h" "H:\_CMD\_AntiHidden\h"
DIR "H:\_CMD\_AntiHidden\?" "H:\_CMD\_AntiHidden\D205~1"
DIR "H:\_CMD\_AntiHidden\autorun.inf" "H:\_CMD\_AntiHidden\autorun.inf"
DIR "H:\_CMD\_AntiHidden\autorun.inf\com1" "H:\_CMD\_AntiHidden\autorun.inf\com1"
DIR "H:\_CMD\_AntiHidden\autorun.inf\defence" "H:\_CMD\_AntiHidden\autorun.inf\defence"
DIR "H:\_CMD\_AntiHidden\\Dragokas.." "H:\_CMD\_AntiHidden\autorun.inf\DRAGOK~1"
FILE "H:\_CMD\_AntiHidden\DirX.csv" "H:\_CMD\_AntiHidden\DirX.csv"
FILE "H:\_CMD\_AntiHidden\Autorun_Folder_Del.cmd" "H:\_CMD\_AntiHidden\AUTORU~1.CMD"
FILE "H:\_CMD\_AntiHidden\AntiHidden_Light.cmd" "H:\_CMD\_AntiHidden\ANTIHI~1.CMD"
FILE "H:\_CMD\_AntiHidden\DirX" "H:\_CMD\_AntiHidden\DIRX-~1.LOG"
FILE "H:\_CMD\_AntiHidden\DirX2.cmd" "H:\_CMD\_AntiHidden\DirX2.cmd"
FILE "H:\_CMD\_AntiHidden\DirX.cmd" "H:\_CMD\_AntiHidden\DirX.cmd"
FILE "H:\_CMD\_AntiHidden\Anti_Hidden_fast_ua_v.1.5.1.cmd" "H:\_CMD\_AntiHidden\ANTI_H~1.CMD"
FILE "H:\_CMD\_AntiHidden\Anti_Hidden_fast_ru_v.1.5.1.cmd" "H:\_CMD\_AntiHidden\ANTI_H~3.CMD"
FILE "H:\_CMD\_AntiHidden\Anti_Hidden_fast_ru_v.1.6.cmd" "H:\_CMD\_AntiHidden\ANTI_H~2.CMD"
fsutil behavior query disable8dot3
fsutil behavior set disable8dot3 0
fsutil behavior set disable8dot3 2
for /f "skip=5 tokens=4" %%? in ('dir /X /-C /A-D "c:\users\alex\desktop\*"') do echo %%?
@echo off
SetLocal EnableDelayedExpansion
:: Вот моя команда для вывода всех файлов с ключами
:: /X - формат 8.3.
:: /-C - убрать разделитель рядов объема файла
:: /A-D - отобразить все скрытые объекты, -D - исключить папки
:: \* - все объекты, вне зависимости от их имени
set dir_com=dir /X /-C /A-D "c:\users\alex\desktop\*"
:: Считаю кол-во строк в выводе команды DIR, отнимаю шапку и 2 последних строки
for /F %%? in ('%dir_com%^| find /C /V ""') do set Total=%%?& Set /A Total-=7&:: 7 = skip+2
:: Получаю вывод команды DIR, без учета ненужных строк
for /F "skip=5 tokens=4" %%? in ('%dir_com%') do Set /A C+=1& if !C! LEQ %Total% echo %%?
@echo off
Chcp 866 >nul
title Пункт меню "Создать..."
SetLocal EnableExtensions
ver |>NUL find "6." && if "%1" neq "Admin" call :elevate
chdir /d "%~dp0"
(
echo @echo off
echo SetLocal EnableExtensions EnableDelayedExpansion
echo Chcp 866 ^>nul
echo title text title
echo cd /d "%%~dp0"
echo.
echo.
echo.
echo pause
echo exit /B
) > "%~dp0new.bat"
md %systemdrive%\Windows\ShellNew 2>NUL
copy /y "%~dp0new.bat" %systemdrive%\Windows\ShellNew\
reg.exe add "HKCR\.bat\ShellNew" /ve /f
reg.exe add "HKCR\.bat\ShellNew" /v FileName /d New.bat /f
del /q "%~dp0new.bat"
cls
Echo Пункт создан,перезагрузите компьютер.
Echo Для выхода нажмите Enter
pause>nul
Exit /B
:Elevate
Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"Admin","","runas",1 >"%~dp0Elevating.vbs"
cscript.exe //nologo "%~dp0Elevating.vbs" "%~dpnx0"
del "%~dp0Elevating.vbs"
Exit
@echo off
SetLocal EnableExtensions EnableDelayedEpansion
Chcp 866 >nul
title text title
cd /d "%~dp0"
pause
exit /B
@echo off
::Включаем режим выполнения команд без сообщений
SetLocal
:: Включение локализации изменений среды в пакетном файле
:: Чтобы изменение переменных в этом батнике не влияли на другие батники, запускаемые по цепочке.
:: Для быстрого обнуления всех переменных (особенно актуально для псевдо-массивов), используя команду EndLocal
SetLocal EnableExtensions
:: разрешение использовать дополнительных ключей команд (например FOR /F) и других защит от дурака,
:: например, переход в папку с пробелами без указания кавычек в пути (например CD My Tools)
SetLocal EnableDelayedEpansion
:: Возможность получить актуальное значение переменной внутри цикла или блока команд,
:: например указывая вместо %time% знаки восклицания !time!
Chcp 866 >nul
:: Включение кодировки 866 для того что бы русский текст не был кракозябрами в сценарии
title text title
:: Значение после первого слова title будет отображаться в названии исполняемого пакетного файла
cd /d "%~dp0"
:: Переход в текущий каталог,сокращает код с параметрами типа del bat.bat вместо del %~dp0bat.bat
::То есть при работе с файлами в папке с bat сценарием не надо дописывать аргументы
:: И при этом вы не рискуете по ошибке запороть систему командой типа: del bat.bat
::Не имеющей в скрипте аргумента cd /d "%~dp0"
pause
:: До того как будет написана финальная версия кода команда pause будет полезная для выявления ошибок и багов
::Либо для принятия решения о доработке кода
exit /B
Выход из текущего пакетного сценария.
@set @x=0; /*
@echo off
SetLocal
ver |>NUL find "6." && if "%1" neq "Admin" (
echo. Требуются права Администратора
echo.
pause & cscript.exe //nologo //e:jscript "%~f0" & Exit /B
)
echo.
echo. Скрипт удаления всех сетевых шар
echo.
echo. Список исходных шар:
echo.
net share
for /F "skip=4" %%? in ('net share ^| find /V "Команда выполнена" ^| find /V "The command completed"') do (
net share "%%?" /DELETE
)
echo.
echo. Список исходных шар после удаления:
echo.
net share
echo.
pause
Exit /B
*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
ext = inputbox ("Введите расширение имени файла:")
Path = GetAssocTool(ext)
Name = GetFileNameFromPath(Path)
msgbox "Расширение: " & ext & vbLf & "Имя файла: " & Name & vbLf & "Путь: " & Path
Function GetAssocTool(ext)
'Получение пути к приложению, с которым ассоциировано расширение имени файла
if left(ext,1) <> "." then ext = "." & ext
if GetOSFamily() = "NT" then GetAssocTool = GetAssocTool_XP(ext) else GetAssocTool = GetAssocTool_Vista(ext)
End Function
Function GetAssocTool_Vista(ext)
user_key = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & ext & "\UserChoice\Progid"
set oShell = CreateObject("WScript.Shell")
on error resume next
progID = oShell.RegRead(user_key)
on error goto 0
if progid = "" then progID = oShell.RegRead("HKCR\" & ext & "\")
comm = oShell.RegRead("HKCR\" & progID & "\shell\open\command\")
GetAssocTool_Vista = ParsePathFromCommandLine(comm)
End Function
Function GetAssocTool_XP(ext)
curSID = GetCurrentSID()
set oShell = CreateObject("WScript.Shell")
on error resume next
EXE_Name = oShell.RegRead("HKEY_USERS\" & curSID & "\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\Application")
on error goto 0
if EXE_Name <> "" then
comm = oShell.RegRead("HKCR\Applications\" & EXE_Name & "\shell\open\command\")
else
progID = oShell.RegRead("HKCR\" & ext & "\")
comm = oShell.RegRead("HKCR\" & progID & "\shell\open\command\")
end if
GetAssocTool_XP = ParsePathFromCommandLine(comm)
End Function
Function ParsePathFromCommandLine(comm)
'Получает путь из командной строки, если кроме него заданы дополнительные аргументы; убирает кавычки
If Left(comm, 1) = """" Then
ParsePathFromCommandLine = Mid(comm, 2, InStr(2, comm, """") - 2)
Else
ParsePathFromCommandLine = Split(comm)(0)
End If
End Function
Function GetFileNameFromPath(sPath)
'Преобразование пути в имя файла
if instr(sPath,"\") = 0 then GetFileNameFromPath = sPath: Exit Function
GetFileNameFromPath = Mid(sPath, InStrRev(sPath, "\") + 1)
End Function
Function GetCurrentSID()
'Получить SID текущего пользователя
Set oNetwork = CreateObject("WScript.Network")
sUserName = oNetwork.UserName
sDomain = oNetwork.UserDomain
Set oWMI = GetObject("winmgmts:\root\cimv2")
Set colSIDs = oWMI.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Caption='" & sDomain & "\\" & sUserName & "'")
For each oSID in colSIDs
GetCurrentSID = oSID.SID
Next
Set oWMI = Nothing: Set colSIDs = Nothing
End Function
Function GetOSFamily()
' Семейство ОС
set oShell = CreateObject("WScript.Shell")
OSVersion = oShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
if cint(left(OSVersion,1)) < 6 then GetOSFamily = "NT" else GetOSFamily = "Vista"
End Function
@set @x=0; /*
@echo off
if "%1"=="" cscript.exe //nologo //e:jscript "%~f0"& Exit
SetLocal EnableDelayedExpansion
mode con: cols=90 lines=20
:begin
cls
Echo Доступны следующие интерфейсы:
Echo.
netsh interface show interface | more +3 | findstr "." | find /n /v ""
Echo.
for /f "skip=2 tokens=3*" %%a in ('netsh interface show interface') do set /a N+=1& set Local!N!=%%b
Echo.[0] - Обновить данные
echo.
:check
set ID=0
set /p "ID=Введите № интерфейса для управления: "
if "%ID%"=="0" goto begin
echo.
echo. Выбран: !Local%ID%!
echo.
echo 1 - Подключить
echo 2 - Отключить
set /p action=
if "%action%"=="1" (
Echo Поключаю...
netsh interface set interface name="!Local%ID%!" admin=ENABLED
) else (
Echo Отключаю...
netsh interface set interface name="!Local%ID%!" admin=DISABLED
)
pause
goto begin
*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
@echo off
if "%1"=="" (
Echo Working...
Call "%~dpnx0" 0 1>nul 2>&1
Echo Ready...
Goto :eof
)
Setlocal Enableextensions
Set Cur=%~dp0
Set Cur=%Cur:~0,-1%
takeown /f "%Cur%" /r /d y
icacls "%Cur%" /grant All:f /T /C
icacls "%Cur%" /grant Все:f /T /C
@echo off
if "%1"=="" (
Echo Working...
Call "%~dpnx0" 0 1>nul 2>&1
Echo Ready...
Goto :eof
)
Setlocal Enableextensions
Set Cur=%~dp0
Set Cur=%Cur:~0,-1%
takeown /f "%Cur%" /r /d y
icacls "%Cur%" /deny All:(DE,WDAC,WO,AS,WD,AD,WEA,DC,WA) /T /C
icacls "%Cur%" /deny Все:(DE,WDAC,WO,WD,AS,AD,WEA,DC,WA) /T /C
icacls "%Cur%" /grant All:(RC,S,GR,GW,GE,RD,REA,X,RA) /T /C
icacls "%Cur%" /grant Все:(RC,S,GR,GW,GE,RD,REA,X,RA) /T /C
icacls "%Cur%" /grant All:(WD) /C
icacls "%Cur%" /grant Все:(WD) /C
icacls "%~dpnx0" /grant:r Все:f /C
icacls "%~dpnx0" /grant:r All:f /C
@echo off
:: Macros Access Script by Alex Dragokas
echo.
echo Утилита включения макросов для MS Office 2003-2013
echo.
:ch_Security
echo Введите цифру и нажмите кнопку ENTER:
echo.
echo 1 - Запуск макросов без уведомления.
echo 2 - Запуск макросов с разрешения пользователя.
echo 3 - Запретить запуск неподписанных макросов (не уведомлять).
echo.
set ch=
set /p "ch=Ваш выбор: "
echo.
if "%ch%"=="1" set "MacrosLevel=1"
if "%ch%"=="2" set "MacrosLevel=2"
if "%ch%"=="3" set "MacrosLevel=3"
if "%ch%" neq "1" if "%ch%" neq "2" if "%ch%" neq "3" goto ch_Security
:ch_VBA
echo Хотите включить программный доступ к коду макроса?
echo.
echo 1 - Да. Разрешить.
echo 2 - Нет. Запретить.
echo.
set ch=
set /p "ch=Ваш выбор: "
echo.
if "%ch%"=="1" set "ProjectLevel=1"
if "%ch%"=="2" set "ProjectLevel=0"
if "%ch%" neq "1" if "%ch%" neq "2" goto ch_VBA
:: Проверяю, запущен ли хоть один из процессов MS Office
:Check
call :CheckRun || (echo.& echo НЕЛЬЗЯ продолжить. Сначала нужно завершить все офисные приложения.& echo.& pause & echo.& goto Check)
For %%k in (
HKCU\Software\Microsoft\Office
HKCU\Software\Wow6432Node\Microsoft\Office
) do (
For /F "tokens=5 delims=\" %%a in ('reg query "%%k" 2^>NUL ^| findstr /R "^.*\\[0-9].*"') do (
if "%%a" neq "8.0" (
if "%%a"=="9.0" (echo Обнаружен MS Office 2000 & call :EnumApps 2003 "%%a")
if "%%a"=="10.0" (echo Обнаружен MS Office XP & call :EnumApps 2003 "%%a")
if "%%a"=="11.0" (echo Обнаружен MS Office 2003 & call :EnumApps 2003 "%%a")
if "%%a"=="12.0" (echo Обнаружен MS Office 2007 & call :EnumApps 2007 "%%a")
if "%%a"=="13.0" (echo Обнаружен MS Office 2010 & call :EnumApps 2007 "%%a")
if "%%a"=="14.0" (echo Обнаружен MS Office 2010 & call :EnumApps 2007 "%%a")
if "%%a"=="15.0" (echo Обнаружен MS Office 2013 & call :EnumApps 2007 "%%a")
if not Defined isChanges (echo Обнаружена неизвестная версия MS Office & call :EnumApps 2007 "%%a")
echo.
)
)
)
pause
exit /B
:EnumApps %1-mso.family %2-key.version
Set "isChanges=true"
For %%k in (
HKCU\Software\Microsoft\Office\%~2
HKCU\Software\Wow6432Node\Microsoft\Office\%~2
) do (
For /F "tokens=6 delims=\" %%a in ('reg query "%%k" 2^>NUL') do (
if /i "%%a"=="Word" call :ChangeSecurity "%~1" "%~2" "%%a"
if /i "%%a"=="Excel" call :ChangeSecurity "%~1" "%~2" "%%a"
if /i "%%a"=="PowerPoint" call :ChangeSecurity "%~1" "%~2" "%%a"
if /i "%%a"=="Access" call :ChangeSecurity "%~1" "%~2" "%%a"
if /i "%%a"=="Outlook" call :ChangeSecurity "%~1" "%~2" "%%a"
)
)
Exit /B
:ChangeSecurity %1-mso.family %2-key.version %3-Application
echo %~3
if "%~1"=="2003" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v Level /t REG_DWORD /d %MacrosLevel% /f
if "%~1"=="2007" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v VBAWarnings /t REG_DWORD /d %MacrosLevel% /f
if /i "%~3" neq "Outlook" if "%~2" neq "9.0" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v AccessVBOM /t REG_DWORD /d %ProjectLevel% /f
Exit /B
:CheckRun
TASKLIST /FI "imagename eq winword.exe" | find /i "winword.exe" && exit /B 1
TASKLIST /FI "imagename eq excel.exe" | find /i "excel.exe" && exit /B 1
TASKLIST /FI "imagename eq powerpnt.exe" | find /i "powerpnt.exe" && exit /B 1
TASKLIST /FI "imagename eq outlook.exe" | find /i "outlook.exe" && exit /B 1
TASKLIST /FI "imagename eq msaccess.exe" | find /i "msaccess.exe" && exit /B 1
Exit /B 0
DTLite.exe -get_count dt
DTLite.exe -get_letter dt, 1
:: укажем путь к образу
set WindowsISO=c:\Windows7.ISO
ECHO Начинаю процесс монтирования образа ISO: %WindowsISO% ...
powershell.exe "Mount-DiskImage ""%WindowsISO%"""
:: Получаю имя диска по указанному пути к образу
FOR /F "skip=3" %%I IN ('powershell.exe "Get-DiskImage """%WindowsISO%""" | Get-Volume | Select-Object {$_.DriveLetter}"') DO echo Disk %%I
pause
ECHO Размонтирование образа ISO
powershell.exe "Dismount-DiskImage ""%WindowsISO%"""
defrag %SystemDrive% /a /v
'==========================================================================
'
' AUTHOR: Леонид_33
' NAME: HDD_Smart.vbs
'
' Скрипт для получения SMARTа HDD
' Может брать SMART как с локальной так и удаленной машины с выводом результата в файл в формате CSV
' При запуске скрипта выдается окно ввода имени(IP) машины с учетными данными
' Если хотим получить SMART с локальной машины, то ничего не указываем, если с удаленной, указываем имя(IP) машины, и, если надо, учетные данные
' Работает на WindowsXP(SP2,SP3), Windows2003SP2, Windows2008SP1
' Берет SMART через WMI, поэтому, что винда отдает, то отдает т.е.
' работает только со стандартно подключенными на мать HDD IDE и SATA
' Как бы того не хотелось, НЕ РАБОТАЕТ с рэйдами.
' Ну не видит винда SMARTов с этих винтов и все тут.
'
' Если что по атрибутам неясно, можно глянуть тут
' http://en.wikipedia.org/wiki/Self-Monitoring%2C_Analysis%2C_and_Reporting_Technology
'
'==========================================================================
if not isAdminRights then call Elevate(""): WScript.Quit
Dim strComputer
Dim strLogin
Dim strPassword
On Error Resume Next
'GetPassword()
strComputer = "."
strLogin = ""
strPassword = ""
If strLogin = "" or strComputer = "." then
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")
else
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _
"root\CIMV2", _
strLogin, _
strPassword, _
"MS_409")
end If
Set SmartDataItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictData", "WQL", 48)
InstanceName = Array()
SmartData = Array()
SmartLength = Array()
RowCount = 0
For Each objItem In SmartDataItems
Redim Preserve InstanceName(RowCount)
InstanceName(RowCount) = objItem.InstanceName
Redim Preserve SmartData(RowCount)
SmartData(RowCount) = objItem.VendorSpecific
Redim Preserve SmartLength(RowCount)
SmartLength(RowCount) = objItem.Length
RowCount = RowCount + 1
Next
Set SmartDataItems = Nothing
ThresholdData = Array()
Redim Preserve ThresholdData(RowCount)
PredictFailure = Array()
Redim Preserve PredictFailure(RowCount)
Reason = Array()
Redim Preserve Reason(RowCount)
RowCount = 0
Set ThresholdItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictThresholds", "WQL", 48)
For Each objItem In ThresholdItems
ThresholdData(RowCount) = objItem.VendorSpecific
RowCount = RowCount + 1
Next
Set ThresholdItems = Nothing
RowCount = 0
Set PredictStatusItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictStatus", "WQL", 48)
For Each objItem In PredictStatusItems
PredictFailure(RowCount) = objItem.PredictFailure
Reason(RowCount) = objItem.Reason
RowCount = RowCount + 1
Next
Set PredictStatusItems = Nothing
Set oDict = CreateObject("Scripting.Dictionary")
CreateDict(oDict)
Set objFSO = CreateObject("Scripting.FileSystemObject")
If strComputer = "." then
'Set objTextFile = objFSO.OpenTextFile(objFSO.GetSpecialFolder(2) & "\drp\" & "HDD_Smart.csv", 2, True)
Set objTextFile = objFSO.OpenTextFile(objFSO.GetParentFolderName(WScript.ScriptFullName) & "\HDD_Smart.csv", 2, True)
else
'Set objTextFile = objFSO.OpenTextFile(objFSO.GetSpecialFolder(2) & "\drp\" & "HDD_Smart_" & strComputer & ".csv", 2, True)
Set objTextFile = objFSO.OpenTextFile(objFSO.GetParentFolderName(WScript.ScriptFullName) & "\HDD_Smart_" & strComputer & ".csv", 2, True)
end If
For CurrentDisk = 0 to RowCount - 1
objTextFile.WriteLine("Drive: " & Replace(Mid(InstanceName(CurrentDisk), 9, InStr(InstanceName(CurrentDisk), "__") - 9), "_", " "))
objTextFile.WriteLine("PredictFailure: " & PredictFailure(CurrentDisk))
objTextFile.WriteLine("Reason: " & Reason(CurrentDisk))
objTextFile.WriteLine("ID;Attribute;Type;Flag;Threshold;Value;Worst;Raw;Status;")
aSmartData = SmartData(CurrentDisk)
aThresholdData = ThresholdData(CurrentDisk)
If IsArray(aSmartData) AND IsArray(aThresholdData) Then
LastID = 0
For x = 2 To SmartLength(CurrentDisk) + 2 Step 12
If LastID > aSmartData(x) then
x = 514
else
LastID = aSmartData(x)
If aSmartData(x) <> 0 Then
objTextFile.Write(aSmartData(x) & ";")
If oDict.Item(aSmartData(x)) = "" Then
objTextFile.Write("VendorSpecific(" & aSmartData(x) & ");")
else
objTextFile.Write(oDict.Item(aSmartData(x)) & ";")
end If
If aSmartData(x + 1) MOD 2 Then
objTextFile.Write("Pre-Failure;")
Else
objTextFile.Write("Advisory;")
End If
' objTextFile.Write(aSmartData(x + 1) & ";")
aFlag = aSmartData(x + 1)
txtFlag = ""
If (aFlag And &H1) <> 0 Then txtFlag = "LC," End If
If (aFlag And &H2) <> 0 Then txtFlag = txtFlag & "OC," End If
If (aFlag And &H4) <> 0 Then txtFlag = txtFlag & "PR," End If
If (aFlag And &H8) <> 0 Then txtFlag = txtFlag & "ER," End If
If (aFlag And &H10) <> 0 Then txtFlag = txtFlag & "EC," End If
If (aFlag And &H20) <> 0 Then txtFlag = txtFlag & "SP," End If
If txtFlag <> "" then
txtFlag = Left(txtFlag, Len(txtFlag)-1 )
end If
objTextFile.Write txtFlag & ";"
objTextFile.Write(aThresholdData(x + 1) & ";") 'Threshold
objTextFile.Write(aSmartData(x + 3) & ";") 'Value
objTextFile.Write(aSmartData(x + 4) & ";") 'Worst
objTextFile.Write((aSmartData(x + 8) * 65536 + aSmartData(x + 7) * 4096 + aSmartData(x + 6) * 256 + aSmartData(x + 5)) & ";") 'Raw
If aSmartData(x + 3) >= aThresholdData(x + 1) Then
objTextFile.WriteLine("OK;")
else
objTextFile.WriteLine("NOT OK;")
end If
end If
end If
Next
else
objTextFile.WriteLine("NO DRIVE WITH SMART FOUND;")
end If
'objTextFile.WriteLine
Next
objTextFile.WriteLine
objTextFile.WriteLine("LC - life critical;")
objTextFile.WriteLine("OC - online collection;")
objTextFile.WriteLine("PR - performance related;")
objTextFile.WriteLine("ER - error rate;")
objTextFile.WriteLine("EC - event count;")
objTextFile.WriteLine("SP - self preserving;")
objTextFile.Close
Wscript.echo "HDD_SMART Is Done!"
Function CreateDict(oDict)
oDict.Add 1, "Raw Read Error Rate"
oDict.Add 2, "Throughput Performance"
oDict.Add 3, "Spin-Up Time"
oDict.Add 4, "Start/Stop Count"
oDict.Add 5, "Reallocated Sectors Count"
oDict.Add 6, "Read Channel Margin"
oDict.Add 7, "Seek Error Rate Rate"
oDict.Add 8, "Seek Time Performance"
oDict.Add 9, "Power-On Hours (POH)"
oDict.Add 10, "Spin Retry Count"
oDict.Add 11, "Recalibration Retries Count"
oDict.Add 12, "Device Power Cycle Count"
oDict.Add 13, "Soft Read Error Rate"
oDict.Add 190, "HDA Temperature"
oDict.Add 191, "G-Sense Error Rate Frequency"
oDict.Add 192, "Power-Off Park Count"
oDict.Add 193, "Load/Unload Cycle Count"
oDict.Add 194, "HDA Temperature"
oDict.Add 195, "Hardware ECC Corrected Count"
oDict.Add 196, "Reallocated Event Count"
oDict.Add 197, "Current Pending Sector Count"
oDict.Add 198, "Off-Line Scan Uncorrectable Sector Count"
oDict.Add 199, "UltraDMA CRC Error Count"
oDict.Add 200, "Write Error Rate"
oDict.Add 201, "Soft Read Error Rate"
oDict.Add 202, "Address Mark Errors Frequency"
oDict.Add 203, "ECC errors (Maxtor: ECC Errors)"
oDict.Add 204, "Soft ECC Correction"
oDict.Add 205, "Thermal Asperity Rate (TAR)"
oDict.Add 206, "Flying Height"
oDict.Add 207, "Spin High Current"
oDict.Add 208, "Spin Buzz"
oDict.Add 209, "Offline Seek Perfomance"
oDict.Add 210, "Vibration During Write"
oDict.Add 211, "Vibration During Read"
oDict.Add 212, "Shock During Write"
oDict.Add 220, "Disk Shift"
oDict.Add 221, "G-Sense Error Rate"
oDict.Add 222, "Loaded Hours"
oDict.Add 223, "Load/Unload Retry Count"
oDict.Add 224, "Load Friction"
oDict.Add 225, "/Unload Cycle Count"
oDict.Add 226, "Load 'In'-time"
oDict.Add 227, "Torque Amplification Count"
oDict.Add 228, "Power-Off Retract Cycle"
oDict.Add 230, "GMR Head Amplitude"
oDict.Add 240, "Head Flying Hours"
oDict.Add 250, "Read Error Retry Rate"
End Function
Function GetPassword()
Dim IE
On Error Resume Next
Set IE = CreateObject( "InternetExplorer.Application" )
With IE
.AddressBar = False
.menubar = False
.Navigate "about:blank"
.Document.Title = "Password"
.ToolBar = False
.Resizable = False
.StatusBar = False
.Width = 340
.Height = 230
End With
With IE.Document.ParentWindow.Screen
IE.Left = (.AvailWidth - IE.Width ) \ 2
IE.Top = (.Availheight - IE.Height) \ 2
End With
Do While IE.Busy
WScript.Sleep 200
Loop
IE.Document.Body.InnerHTML = "<BODY SCROLL=""NO"" BGCOLOR=""#" & BCol & """ TEXT=""#" & TCol & """>" & _
"<FONT FACE=""arial"" SIZE=2>" & _
"Введите имя компьютера<BR><INPUT SIZE=""40"" " & "ID=""Computer""><BR>" &_
"Пользователь<BR><INPUT SIZE=""40"" " & "ID=""Login""><BR>" &_
"Пароль<BR><INPUT TYPE=""password"" SIZE=""40"" " & "ID=""Login"">" &_
"<P><INPUT TYPE=""hidden"" ID=""OK"" " & "NAME=""OK"" VALUE=""0"">"& _
"<INPUT TYPE=""submit"" VALUE="" OK "" " & "OnClick=""vbscript:OK.Value=1""></P>"
strComputer = "."
strLogin = ""
strPassword = ""
IE.visible = True
Do While IE.Document.All.OK.Value = 0
WScript.Sleep 200
Loop
If IE.Document.All.Computer.Value = "" then
strComputer = "."
else
strComputer = IE.Document.All.Computer.Value
If IE.Document.All.Login.Value <> "" then
strLogin = IE.Document.All.Login.Value
strPassword = IE.Document.All.Password.Value
else
strLogin = ""
strPassword = ""
end If
end If
IE.Quit
Set IE = Nothing
End Function
Sub Elevate(msg)
Const DQ = """"
if msgbox(msg & vblf & "Запустить с Административными привилегиями ?", vbQuestion + vbYesNo,"Подтверждение") = vbNo then WScript.Quit 5
Dim oShellApp: Set oShellApp = CreateObject("Shell.Application")
' Конкатенация аргументов
Dim args, i: For i = 1 to WScript.Arguments.Count
args = args & DQ & WScript.Arguments(i - 1) & DQ & " "
Next
if len(args) = 0 then args = DQ & syscure & DQ & " " & DQ & syscheck & DQ
oShellApp.ShellExecute WScript.FullName, DQ & WScript.ScriptFullName & DQ & " " & args, "", "runas", 1
set oShellApp = Nothing
End Sub
Function isAdminRights()
Const KQV = &H1, KSV = &H2, HKCU = &H80000001, HKLM = &H80000002
Set oReg = GetObject("winmgmts:root\default:StdRegProv")
strKey = "System\CurrentControlSet\Control\Session Manager"
intErrNum = oReg.CheckAccess(HKLM, strKey, KQV + KSV, flagAccess)
isAdminRights = flagAccess
Set oReg = Nothing
End Function
@Echo Off
:: Этот командный файл ограничивает политиками управление домашней страницей, поиском и надстройками в IE
:: Автор: Вадим Стеркин. Подробнее http://www.outsidethebox.ms/12904/
:: Политика "Отключить изменение параметров домашней страницы"
:: Задает домашнюю страницу и фиксирует ее политикой
REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main" /v "Start Page" /d "http://www.outsidethebox.ms/" /f
REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel" /v HomePage /t REG_DWORD /d 1 /f
:: Политика "Разрешить сторонние расширения браузера"
:: Запрещает запуск BHO, блокируя панели браузера
REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main" /v "Enable Browser Extensions" /t REG_SZ /d no /f
:: Политика "Не разрешать пользователям включать и отключать надстройки"
:: Полностью отключает управление надстройками
:: REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Restrictions" /v NoExtensionManagement /t REG_DWORD /d 1 /f
:: Политика "Ограничить поставщиков служб поиска заданным списком поставщиков"
:: Включает ограничение списка поисков
REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Infodelivery\Restrictions" /v UsePolicySearchProvidersOnly /t REG_DWORD /d 1 /f
:: Переносит текущий список поисков в политики
REG EXPORT "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes" "%temp%\scopes.reg"
CALL :SearchScope
REG IMPORT "%temp%\scopes.reg"
DEL "%temp%\scopes.reg"
EXIT
:SearchScope
:: http://forum.oszone.net/thread-191684.html
Set Source=%temp%
SetLocal EnableDelayedExpansion
For %%A In ("%Source%\scopes.reg") Do (
For /F "Tokens=1* Delims=:" %%B In ('Type "%%A"^|Findstr /IN "$"') Do (
Set Str=%%C
If "!Str!"=="" (
Echo.>>"%%A_tmp"
) Else (
Set Str=!Str:Software\=Software\Policies\!
Echo !Str!>>"%%A_tmp"
)
)
Move /Y "%%A_tmp" "%%~fA"
)
EndLocal
:: настройка очистки папки winsxs
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Update Cleanup" /v StateFlags0088 /t REG_DWORD /d 2 /f
:: (необязательно) настройка очистки временных файлов (в частности зачищает временную папку dism)
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files" /v StateFlags0088 /t REG_DWORD /d 2 /f
:: создание запланированного задания "CleanupWinSxS"
schtasks /Create /TN CleanupWinSxS /RL Highest /SC monthly /TR "cleanmgr /sagerun:88"
Microsoft Windows [Version 6.3.9600]
(c) Корпорация Майкрософт (Microsoft Corporation), 2013. Все права защищены.
C:\WINDOWS\system32>Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
Cистема DISM
Версия: 6.3.9600.17031
Версия образа: 6.3.9600.17031
[===========================99.2%========================= ]
Сведения хранилища компонентов (WinSxS):
Размер хранилища компонентов по данным проводника : 5.69 GB
Фактический размер хранилища компонентов : 5.58 GB
Совместно с Windows : 4.74 GB
Резервные копии и отключенные компоненты : 707.55 MB
Кэш и временные данные : 154.43 MB
Дата последней очистки : 2014-06-19 22:30:55
Число освобождаемых пакетов : 0
Рекомендуется очистка хранилища компонентов : Нет
Операция успешно завершена.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?