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

Лабораторная работа 2

ЗАДАНИЕ 1. Составить сценарий выполняющий запуск определенного приложения, ожидание его завершения и вывод на экран информации о времени его работы.

startTime = Now

Set WMI = GetObject("winmgmts:")

Set colMonitorProcess = WMI.ExecNotificationQuery("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name='osk.exe'")

Set objClass = GetObject("winmgmts:Win32_Process")

res = objClass.Create("C:\Windows\System32\osk.exe", null, null, PID)

Do

Set objLatestEvent = colMonitorProcess.NextEvent

if objLatestEvent.Path_.Class = "__InstanceDeletionEvent" then

EndTime = Now

Wscript.Echo "Start Time: " & DateDoubleToTimeString(startTime)

Wscript.Echo "Closing Time: " & DateDoubleToTimeString(endTime)

Wscript.Echo "Time of life: " & DateDoubleToTimeString(endTime - startTime)

WScript.Quit

end if

loop

Function DateDoubleToTimeString(dt)

sec = (dt - int(dt)) * 86400

s = sec mod 60

if s < 10 then

s = "0" & s

end if

m = sec \ 60 mod 60

if m < 10 then

m = "0" & m

end if

h = sec \ 3600

if h < 10 then

h = "0" & h

end if

DateDoubleToTimeString = h & ":" & m & ":" & s

End Function

ЗАДАНИЕ 2. Составить сценарий запрещающий запуск определенного приложения. При попытке запуска данного приложения, его работа должна быть завершена, и на экран должно быть выведено сообщение о попытке запуска. Если количество разрешенных копий больше 0, то запрещать запуск необходимо только экземпляры приложения, превышающие указанное число.

Set WMI = GetObject("winmgmts:")

Set Processes = WMI.InstancesOf("Win32_Process")

max = 1

n = 0

for each proc in Processes

if proc.Name = "osk.exe" then

n = n + 1

end if

next

strProcName = "osk.exe"

Set colMonitorProcess = WMI.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name='" & strProcName & "'")

WScript.Echo "Wainting for event . . ."

Do

Set objLatestEvent = colMonitorProcess.NextEvent

if objLatestEvent.Path_.Class = "__InstanceDeletionEvent" then

n = n - 1

end if

if objLatestEvent.Path_.Class = "__InstanceCreationEvent" then

n = n + 1

if n > max then

objLatestEvent.TargetInstance.Terminate()

res = MsgBox("Launch try" & vbCrLf & "denied", vbOKOnly or vbCritical)

end if

end if

Loop

Лабораторная работа 3

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

strComputer = "."

Dim nTotalPhysicalMemory

nTotalPhysicalMemory = 0

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colItems = objWMIService.ExecQuery( _

"SELECT * FROM Win32_PhysicalMemory",,48)

For Each objItem in colItems

nTotalPhysicalMemory = nTotalPhysicalMemory + objItem.Capacity

Next

res = res & "-----------------------------------" & vbCrLf _

& "Win32_PhysicalMemory instance" & vbCrLf _

&"-----------------------------------" & vbCrLf _

& "Capacity: " & nTotalPhysicalMemory/1024/1024 & " MB"

Set colItems = objWMIService.ExecQuery( _

"SELECT * FROM Win32_OperatingSystem",,48)

For Each objItem in colItems

res = res & "-----------------------------------" & vbCrLf _

& "Win32_OperatingSystem instance" & vbCrLf _

& "-----------------------------------" & vbCrLf _

& "FreePhysicalMemory: " & objItem.FreePhysicalMemory/1024 & " MB" & vbCrLf

Next

SaveToFile(res)

Sub SaveToFile(StrToFile)

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("H:\temp.txt", 8,true, 0)

a.WriteLine(StrToFile)

a.Close

End Sub

ЗАДАНИЕ 2. Составить сценарий создающий запланированное задание (ScheduledTask), осуществляющее запуск сценария п.1.

Set objWMIService = GetObject("winmgmts:")

Set objNewJob = objWMIService.Get("Win32_ScheduledJob")

errJobCreated = objNewJob.Create( _

"\MemoryInfo.vbs", "********131000.000000+120", True, , 32 or 8192 or 1048576 or 134217728 , True,JobId)

If errJobCreated <> 0 Then

Wscript.Echo "Error on task creation" & errJobCreated

Else

Wscript.Echo "New Job ID: " & JobID

End If

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

strComputer = "."

dim Input

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colItems = objWMIService.ExecQuery( _

"SELECT * FROM Win32_ScheduledJob",,48)

For Each objItem in colItems

Wscript.Echo "-----------------------------------" & vbCrLf

Wscript.Echo "Win32_ScheduledJob instance" & vbCrLf

Wscript.Echo "-----------------------------------" & vbCrLf

Wscript.Echo "Command: " & objItem.Command & vbCrLf

Wscript.Echo "JobId: " & objItem.JobId & vbCrLf

Next

Set colItems = objWMIService.ExecQuery( _

"SELECT * FROM Win32_ScheduledJob",,48)

Wscript.Echo "What task should be deleted?"

Input = 0

Input = Input + WScript.StdIn.ReadLine

WScript.Echo Input

For Each objItem in colItems

if (objItem.JobId = Input) then

errJobDelete=objItem.Delete()

end if

Next

WScript.Echo errJobDelete

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

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colItems = objWMIService.ExecQuery( _

"SELECT * FROM Win32_LogicalDisk",,48)

For Each objItem in colItems

Wscript.Echo "-----------------------------------" & vbCrLf _

& "Win32_LogicalDisk instance" & vbCrLf _

& "-----------------------------------" & vbCrLf _

& "Caption: " & objItem.Caption & vbCrLf _

& "DeviceID: " & objItem.DeviceID & vbCrLf _

& "FileSystem: " & objItem.FileSystem & vbCrLf _

& "FreeSpace: " & objItem.FreeSpace & vbCrLf _

& "VolumeSerialNumber: " & objItem.VolumeSerialNumber & vbCrLf

Next

ЗАДАНИЕ 5. Составить сценарий формирования списка файлов по заданному условию.

Dim strComputer

Dim objService

Dim strResult

Dim colFiles

Dim objFile

Dim WshShell

Const ForWriting = 2

Const TristateUseDefault = 2

Sub TextOut (Text, File)

Dim objFSO, FOut

Set objFSO=WScript.CreateObject("Scripting.FileSystemObject")

Set FOut = objFSO.OpenTextFile (File, ForWriting, TristateUseDefault)

FOut.WriteLine Text

FOut.Close

End Sub

strComputer = "."

strResult = "All doc files on C: " & vbCrLf & vbCrLf

Set objService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colFiles = objService.ExecQuery(_

"SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Extension = 'doc'")

For Each objFile in colFiles

strResult = strResult & objFile.Name & vbCrLf

Next

TextOut strResult, "H:\Files.txt"

Set WshShell = WScript.CreateObject("WScript.Shell")

ЗАДАНИЕ 6. Составить сценарий, копирующий свой файл в папку “C:\tmp”, а затем переименовать его.

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" & _

strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile where FileName = 'FileCopyAndRename' AND Extension = 'vbs'")

For Each objFile in colFiles

objFile.Copy("c:\tmp\"& objFile.FileName & "." & objFile.Extension)

Next

Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile where FileName = 'FileCopyAndRename' AND Extension = 'vbs' AND Drive = 'C:'")

For Each objFile in colFiles

objFile.Rename("c:\tmp\.new"& objFile.FileName & "." & objFile.Extension)

Next

ЗАДАНИЕ 7. Составить сценарий удаления папки “C:\tmp”.

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" & _

strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery("Select * from Win32_Directory where Name = 'c:\\tmp'")

For Each objFile in colFiles

objFile.Delete()

Next