- •Содержание
- •Лабораторная работа № 1 Основы технологии Windows Management Instrumentation. Работа с процессами и потоками в wmi
- •Ход работы
- •Варианты заданий
- •Варианты заданий для запуска процесса
- •Лабораторная работа № 3 Сбор информации о памяти и планирование заданий. Работа с файловой системой
- •Ход работы
- •Варианты заданий
- •Лабораторная работа № 4 Организация резервного копирования данных с использованием wmi и vbScript
- •Лабораторная работа 2
- •Лабораторная работа 3
- •Лабораторная работа 4
- •Приложение б. Экранные формы выполнения скриптов лабораторная работа 1
- •И вывод информации о свойствах и используемых потоках приложением
- •Лабораторная работа 2
- •Лабораторная работа 3
- •Лабораторная работа 4
Варианты заданий для запуска процесса
№ в-та |
Приложение |
Количество разрешенных копий | ||
исполняемый файл |
название | |||
7 |
osk.exe |
On-Screen Keyboard |
0 |
Лабораторная работа № 3 Сбор информации о памяти и планирование заданий. Работа с файловой системой
Цель работы: научится получать информацию о физической и виртуальной памяти, изучить способы управления планировщиком заданий с помощью WMI, научится работать с файловой системой Windows с помощью сценариев WMI.
Ход работы
Составить сценарий определения объемов памяти (табл. 3.3). В сценарии необходимо реализовать запись данных в текстовый файл. Каждый запуск сценария дописывает данные в файл, а не создает новый.
Составить сценарий создающий запланированное задание (Scheduled Task), осуществляющее запуск сценария п.1. День и время выполнения задания см. в табл. 3.
Составить сценарии просмотра и удаления запланированных заданий, в которых реализовать просмотр всех заданий с выводом идентификатора JobId и удаление заданий по одному, с вводом идентификатора удаляемого задания.
Таблица 3.3
Варианты заданий
№ |
Определяемые объемы памяти |
Дата запуска задания |
Время запуска задания |
7 |
Общий и свободный объем физической памяти |
7, 14, 21, 28 числа каждого месяца |
13.10 |
Составить сценарий получения информации о логических дисках. Вывести список логических дисков с указанием идентификатора диска и типа файловой системы. Для логических дисков, являющихся разделами жесткого диска отобразить доступное дисковое пространство.
Составить сценарий формирования списка файлов по заданному условию.
№
в-та
Условие формирования списка файлов
1
Документы Word, хранящиеся на диске “C:”
Составить сценарий, копирующий свой файл в папку “C:\tmp”, а затем переименовать его.
Составить сценарий удаления папки “C:\tmp”.
Изучить способ мониторинга модификации файлов с помощью сценариев WMI.
Лабораторная работа № 4 Организация резервного копирования данных с использованием wmi и vbScript
Цель работы: научиться организовывать резервное копирование данных с использованием сценариев на языке VBScript и WMI.
Ход работы
Составить сценарий, выполняющий резервное копирование данных согласно варианту (табл. 1). Который должен обеспечивать:
а) архивацию всех файлов на диске C:\ соответствующих заданной маске;
б) Архивы должны иметь имена формата backcopy.*. Каждый архив должен помещаться в отдельную папку – d:\backup\HHMMSS, где HH – час создания архива, MM – минута создания архива, SS – секунда создания архива.
Таблица 4.7
Варианты заданий для резервного копирования
№ в-та |
Способ копирования |
Маска |
Количество хранимых архивов |
Схема копирования |
7 |
Архиватор ZIP |
*y*.txt |
5 |
Полное |
Составить сценарий, удаляющий устаревшие архивы согласно варианту (табл. 7)
Архив считается устаревшим, если после его создания было создано больше чем указанное в табл. 6. количество хранимых архивов.
Таблица 4.8
Варианты обработки устаревших архивов
№ |
Вариант |
Нечетные |
Устаревшие архивы удаляются |
ПРИЛОЖЕНИЕ А. ЛИСТИНГИ ФАЙЛОВ СКРИПТОВ К ЛАБ. РАБОТАМ
ЛАБОРАТОРНАЯ РАБОТА 1
ЗАДАНИЕ 1. Составить сценарий получения списка свойств для заданного класса (табл. 1).
dim objService, colNetworkAdapters, objItem
dim VideoInfo, objClassProperty
dim FSO, TempPath, TxtFile
Set objService = GetObject("WinMgmts:\\.\Root\CIMV2")
Set colNetworkAdapters = objService.ExecQuery("SELECT * FROM Win32_VideoController")
VideoInfo = "Video Controller Info" & vbCrLf & vbCrLf
' Начинаем перебор коллекции
For Each objItem in colNetworkAdapters
' Начинаем перебор всех свойств для текущего экземпляра класса WMI
For Each objClassProperty In objItem.Properties_
' Если значение больше 0
If Len(objClassProperty.value)>0 Then
VideoInfo = VideoInfo & objClassProperty.Name &"= " & objClassProperty.value &vbCrLf
End If
Next
VideoInfo = VideoInfo & "----------------------------------------------" &vbCrLf &vbCrLf
Next
ShowInNotepad(VideoInfo)
'Процедура для открытия файла с данными класса Win32_Process
Sub ShowInNotepad(StrToFile)
dim temp_file, txt_file, FSO, WshShell
'Ссылка на объект FileSystemObject
set FSO = WScript.CreateObject("Scripting.FileSystemObject")
' 'Ссылка на объект WScript.Shell
set WshShell = WScript.CreateObject("WScript.Shell")
temp_file = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\" & FSO.GetTempName
Set txt_file = FSO.CreateTextFile(temp_file)
txt_file.WriteLine(StrToFile)
txt_file.Close
WshShell.Run "notepad.exe " & temp_file
End Sub
ЗАДАНИЕ 2. Составить сценарий сбора сведений о подключенных устройствах, согласно варианту (табл. 1).
OnErrorResumeNext
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
For Each objVideo In objService.ExecQuery("SELECT * FROM Win32_VideoController")
res = res & "Current Number Of Colors: " &objVideo.CurrentNumberOfColors & vbCrLf
res = res & "Current Refresh Rate, Hz: " &objVideo.CurrentRefreshRate & vbCrLf
res = res & "Adapter DAC Type: " &objVideo.AdapterDACType & vbCrLf
Next
ShowInNotepad(res)
'Процедура для открытия файла с данными класса Win32_Process
Sub ShowInNotepad(StrToFile)
dim temp_file, txt_file, FSO, WshShell
'Ссылка на объект FileSystemObject
set FSO = WScript.CreateObject("Scripting.FileSystemObject")
' 'Ссылка на объект WScript.Shell
set WshShell = WScript.CreateObject("WScript.Shell")
temp_file = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\" & FSO.GetTempName
Set txt_file = FSO.CreateTextFile(temp_file)
txt_file.WriteLine(StrToFile)
txt_file.Close
WshShell.Run "notepad.exe " & temp_file
End Sub
ЗАДАНИЕ 3. Составить сценарий запуска процесса согласно варианту
const HIGH = 128
dim objClass, objService, objStartup, objConfig, objProcess, objThread
dim colProcesses, colThreads
dim res, op
On Error Resume Next
Set objClass = GetObject("winmgmts:Win32_Process")
If Err.Number <> 0 Then
res = res & Err.Number & ": " & Err.Description
WScript.Quit
End If
Set objService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
res = res & Err.Number & ": " & Err.Description
WScript.Quit
End If
Set objStartup = objService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = 1
objConfig.PriorityClass = HIGH
dim crtime
Res = objClass.Create("C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.exe", Null, objConfig, PID)
crtime = now()
If Res <> 0 Then
res = res & "Код ошибки: " & Res
End If
Set colProcesses = objService.ExecQuery (_
"SELECT * FROM Win32_Process WHERE Name = 'WINWORD.exe'")
For Each objProcess In colProcesses
res = res & "Path: " & objProcess.ExecutablePath & vbCrLf
dtmCreationDate = objProcess.CreationDate
strReturn = WMIDateStringToDate(dtmCreationDate)
res = res & "Creation Date: " & strReturn & vbCrLf
op = objProcess.Priority
if op >= 13 & op < 16 then
op = "HIGH"
end if
res = res & "Priority: " & op & vbCrLf
res = res & "ProcessID: " & objProcess.ProcessID & vbCrLf
res = res & "Thread Count: " & objProcess.ThreadCount & vbCrLf
res = res & vbCrLf & vbCrLf & "======Threads======" & vbCrLf & vbCrLf
Set colThreads = objService.ExecQuery (_
"SELECT * FROM Win32_Thread")
For Each objThread In colThreads
if objThread.ProcessHandle = objProcess.Handle Then
res = res & "Process Handle: " & objThread.ProcessHandle & vbCrLf
op = objThread.Priority
if op >= 13 & op < 16 then
op = "HIGH"
end if
res = res & "Priority: " & op & vbCrLf
res = res & "Base Priority: " & objThread.PriorityBase & vbCrLf
res = res & "Elapsed Time: " & objThread.ElapsedTime & vbCrLf
res = res & "Thread State: " & objThread.ThreadState & vbCrLf
res = res & vbCrLf & vbCrLf
end if
Next
Next
ShowInNotepad(res)
Function WMIDateStringToDate(dtmCreationDate)
WMIDateStringToDate = CDate(Mid(dtmCreationDate, 5, 2) & "/" & _
Mid(dtmCreationDate, 7, 2) & "/" & Left(dtmCreationDate, 4) _
& " " & Mid (dtmCreationDate, 9, 2) & ":" & _
Mid(dtmCreationDate, 11, 2) & ":" & Mid(dtmCreationDate, _
13, 2))
End Function
Sub ShowInNotepad(StrToFile)
dim temp_file, txt_file, FSO, WshShell
'Ссылка на объект FileSystemObject
set FSO = WScript.CreateObject("Scripting.FileSystemObject")
' 'Ссылка на объект WScript.Shell
set WshShell = WScript.CreateObject("WScript.Shell")
temp_file = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\" & FSO.GetTempName
Set txt_file = FSO.CreateTextFile(temp_file)
txt_file.WriteLine(StrToFile)
txt_file.Close
WshShell.Run "notepad.exe " & temp_file
End Sub
ЗАДАНИЕ 4. Составить сценарий сбора информации о процессах согласно варианту
dim objClass, objService, objStartup, objConfig, objProcess, objThread
dim colProcesses, colThreads
dim res, op, name, temps, nMax
nMax = CLng(0)
On Error Resume Next
Set objClass = GetObject("winmgmts:Win32_Process")
If Err.Number <> 0 Then
res = res & Err.Number & ": " & Err.Description
WScript.Quit
End If
Set objService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
res = res & Err.Number & ": " & Err.Description
WScript.Quit
End If
Set colProc = objService.ExecQuery (_
"SELECT * FROM Win32_Process")
For Each objProc In colProc
res = res & "Process Name: " & objProc.Name
res = res & " | Virtual Size: " & CLng(objProc.VirtualSize) & vbCrLf & vbCrLf
res = res & "============================================" & vbCrLf & vbCrLf
op = CLng(objProc.VirtualSize)
If op >= max Then
max = op
name = objProc.Name
end if
Next
res = res & vbCrLf & "=================Solution====================" & vbCrLf &vbCrLf
res = res & "Process Name: " & name &vbCrLf
res = res & "The highest amount of used Virtual Size: " & max & vbCrLf
ShowInNotepad(res)
Sub ShowInNotepad(StrToFile)
Dim temp_file, txt_file, FSO, WshShell
'Ссылка на объект FileSystemObject
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
' 'Ссылка на объект WScript.Shell
Set WshShell = WScript.CreateObject("WScript.Shell")
temp_file = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\" & FSO.GetTempName
Set txt_file = FSO.CreateTextFile(temp_file)
txt_file.WriteLine(StrToFile)
txt_file.Close
WshShell.Run "notepad.exe " & temp_file
End Sub
ЗАДАНИЕ 5. Составить сценарий завершающий все процессы “notepad.exe” имеющие низкий приоритет (Idle).
dim WMI
set WMI = GetObject("WinMgmts:")
set colProc = WMI.ExecQuery _
("SELECT * FROM Win32_Process " & _
"WHERE Name = 'notepad.exe'")
for each objProc in colProc
if objProc.Priority = 4 Then
objProc.Terminate()
Wscript.Echo "Process was killed!"
end if
next
ЗАДАНИЕ 6. Составить сценарий завершающий работу всех программ, запущенных пользователем из WindowsCommander(TotalCommander).
Dim ID1, ID2
Dim objProc, objService, objClass
Dim colProc
On Error Resume Next
Set objClass = GetObject("winmgmts:Win32_Process")
If Err.Number <> 0 Then
res = res & Err.Number & ": " & Err.Description
WScript.Quit
End If
Set objService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
res = res & Err.Number & ": " & Err.Description
WScript.Quit
End If
Set colProc = objService.ExecQuery (_
"SELECT * FROM Win32_Process")
For Each objProc In colProc
If objProc.Name = "TOTALCMD.EXE" Then
ID1 = objProc.ProcessID
End If
If objProc.Name = "TOTALCMD64.EXE" Then
ID2 = objProc.ProcessID
End If
If objProc.ParentProcessId = ID1 Or objProc.ParentProcessId = ID2 Then
objProc.Terminate()
Wscript.Echo "Process was just killed!"
End If
Next