Stranger2000
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору =========Звиняйте за длину, есть такой крипт (см ниже), который всякому входящему в домен прописывает дефраг всех дисков (втч и CD\DVD) Собственно, сам я скриптовать в vbs пошти нимагу, и этот скрипт для меня почти как темный лес. обнаружил, что время старта задачи все время разное и то, что он все дисковые устройства бросает - по задаче на диск... приблуда, ИМХО, полезная, но хотелось бы, чтобы диски проставлялись только локальные и чтобы на одно и то же время. Гляньте, пожалста, акулы скриптографии 'автоматом загоняет дефраг дисковых устройств в планировщик. на рандомное время, сцуко такое!!! Option Explicit Dim oNet, objWMIService, objFSO, Drives, Drive, atstatus, starttime Set oNet = CreateObject("WScript.Network") If not LCase(oNet.ComputerName) = LCase("Server-trade") Then Set objWMIService = GetObject("winmgmts:\\" & oNet.ComputerName & "\root\CIMV2") Set objFSO = CreateObject("Scripting.FileSystemObject") Set Drives = objFSO.Drives For Each drive In Drives If Drive.DriveType = 2 Then atstatus = chkStat(Drive.DriveLetter) If atstatus = 0 Then starttime = randomTime setatjob Drive.DriveLetter, starttime Else End If Else End If Next Else End If '************************ Function setatjob(Drive, startTime) '************************ Dim objShare, objInParam Set objShare = objWMIService.Get("Win32_ScheduledJob") Set objInParam = objShare.Methods_("Create").inParameters.SpawnInstance_() objInParam.Properties_.Item("Command") = "defrag " & Drive & ": -f -v" objInParam.Properties_.Item("DaysOfWeek") = "16" objInParam.Properties_.Item("InteractWithDesktop") = False objInParam.Properties_.Item("RunRepeatedly") = True objInParam.Properties_.Item("StartTime") = "********" & startTime & "0000.000000+660" Set setAtJob = objWMIService.ExecMethod("Win32_ScheduledJob", "Create", objInParam) End Function '************************ '************************ Function chkStat(Drive) '************************ Dim status, objItem, colItems status = 0 Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ScheduledJob") For Each objItem in colItems If (objItem.Command = "defrag " & Drive & ": -f -v") Then status = status + 1 Else status = status + 0 End If Next chkStat = status End Function '************************ '************************ Function randomTime() randomize randomTime = int (17 * rND) If (randomTime < 9) Then randomTime = randomTime + 9 End If If (randomTime > 17) Then If (randomTime-17 > 9) Then randomTime = randomTime - 17 Else randomTime = randomTime - 8 End If End If If randomTime < 10 Then randomTime = "0" & randomTime End If End Function '************************ |