Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример отчета по ОС..docx
Скачиваний:
12
Добавлен:
03.03.2016
Размер:
2.33 Mб
Скачать

Варианты заданий для запуска процесса

в-та

Приложение

Количество разрешенных копий

исполняемый файл

название

7

osk.exe

On-Screen Keyboard

0

Лабораторная работа № 3 Сбор информации о памяти и планирование заданий. Работа с файловой системой

Цель работы: научится получать информацию о физической и виртуальной памяти, изучить способы управления планировщиком заданий с помощью WMI, научится работать с файловой системой Windows с помощью сценариев WMI.

Ход работы

  1. Составить сценарий определения объемов памяти (табл. 3.3). В сценарии необходимо реализовать запись данных в текстовый файл. Каждый запуск сценария дописывает данные в файл, а не создает новый.

  2. Составить сценарий создающий запланированное задание (Scheduled Task), осуществляющее запуск сценария п.1. День и время выполнения задания см. в табл. 3.

  3. Составить сценарии просмотра и удаления запланированных заданий, в которых реализовать просмотр всех заданий с выводом идентификатора JobId и удаление заданий по одному, с вводом идентификатора удаляемого задания.

Таблица 3.3

Варианты заданий

Определяемые объемы памяти

Дата запуска задания

Время запуска задания

7

Общий и свободный объем физической памяти

7, 14, 21, 28 числа каждого месяца

13.10

  1. Составить сценарий получения информации о логических дисках. Вывести список логических дисков с указанием идентификатора диска и типа файловой системы. Для логических дисков, являющихся разделами жесткого диска отобразить доступное дисковое пространство.

  2. Составить сценарий формирования списка файлов по заданному условию.

    в-та

    Условие формирования списка файлов

    1

    Документы Word, хранящиеся на диске “C:”

  3. Составить сценарий, копирующий свой файл в папку “C:\tmp”, а затем переименовать его.

  4. Составить сценарий удаления папки “C:\tmp”.

  5. Изучить способ мониторинга модификации файлов с помощью сценариев WMI.

Лабораторная работа № 4 Организация резервного копирования данных с использованием wmi и vbScript

Цель работы: научиться организовывать резервное копирование данных с использованием сценариев на языке VBScript и WMI.

Ход работы

Составить сценарий, выполняющий резервное копирование данных согласно варианту (табл. 1). Который должен обеспечивать:

а) архивацию всех файлов на диске C:\ соответствующих заданной маске;

б) Архивы должны иметь имена формата backcopy.*. Каждый архив должен помещаться в отдельную папку – d:\backup\HHMMSS, где HH – час создания архива, MM – минута создания архива, SS – секунда создания архива.

Таблица 4.7

Варианты заданий для резервного копирования

в-та

Способ копирования

Маска

Количество

хранимых

архивов

Схема копирования

7

Архиватор ZIP

*y*.txt

5

Полное

  1. Составить сценарий, удаляющий устаревшие архивы согласно варианту (табл. 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