Автор: YNY
Дата сообщения: 10.04.2011 14:57
9nine>1 2 3
[more=получился вот такой вот скрипт]
'on error resume next
const ADS_SCOPE_SUBTREE = 2 ' или 0 если не интересны вложенные ОУ
Set objArgs = WScript.Arguments 'используем пар-ры комм строки
'objArgs(0) -- с какова мм/дд/гггг на
'objArgs(1) какой день недели (от 0-воскр до 6- субб) будет перенос
DIM WeekAccess1(6,2)'(0-6),0-воскресенье,(0-2) -- по 8-мь часов
if (objArgs.Count<>2) then
msgbox "Не достаточно инфы",vbExclamation
else
Set fso = CreateObject("Scripting.FileSystemObject")
if Now>objArgs(0) then
msgbox "Параметры не верно указаны, т.е указывают на прошлое!",vbCritical
else
if (Weekday(Now,0)=1) then
MAIN(1)' -- Upload
else
MAIN(0)' -- Change and Backup
end if
end if
end if
'23
SUB MAIN(BloadU)
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
'29
Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select * from 'LDAP://DC=Myh,DC=local' " _
& "Where objectClass='User' and objectCategory='person'"
'objCommand.Properties("Page Size") = 2000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set rs = objCommand.Execute
rs.MoveFirst
'39
Do Until rs.EOF
For i = 0 To rs.Fields.Count - 1
' For Single Value attribute.
'Wscript.Echo rs.Fields(i).Name, " = ", rs.Fields(i).Value
'lstResult.AddItem rs.Fields(i).Value
if (ChkLAcc(rs.Fields(i).Value)=false) then
Set oUserBU = GetObject(rs.Fields(i).Value)
fmis=oUserBU.Get("Name")
if BloadU=1 then
'54 'start upload parameters
'msgbox "upload"
Dim rLoginHours(20)
Set f = fso.OpenTextFile("c:\"& fmis & ".txt", 1)
for i2=0 to 6
for j2=1 to 3
'WeekAccess1(i2,j2-1)=cByte(f.Readline)
df=df+1
rLoginHours(df-1)=rLoginHours(df-1) & cByte(f.Readline)
next
next
f.Close
'msgbox tm
'msgbox VarType(rLoginHours)
Set UpoUser = GetObject(rs.Fields(i).Value)
UpoUser.PutEX 1, "LogonHours", "0" 'сбрасываем в сост по умолчанию
UpoUser.SetInfo
UpoUser.Put "LogonHours", rLoginHours 'пытаемся обновить из файла
UpoUser.SetInfo
else
'66 'start backup
CrArrWeek(rs.Fields(i).Value)
Set f = fso.OpenTextFile("c:\"&fmis&".txt", 2, True)
for i1=0 to 6
for j1=0 to 2
f.writeline Cstr(ascb(WeekAccess1(i1,j1)))
next
next
f.Close
end if
end if
'77
next
rs.MoveNext
Loop
END SUB
'83 чекаем локальные и встроенные аккаунты
Function ChkLAcc(FDQNAccName)
const LAC0="IUSR_"
const LAC1="IWAM_"
const LAC2="SUPPORT_"
const LAC3="krbtgt"
on error resume next
ChkLAcc=False
Set objUser = GetObject(FDQNAccName)
'92
if IsNull(objUser.Get("Description")) then exit function
if instr(objUser.Get("Description"),"Встроенная")_
OR instr(objUser.Get("Name"),LAC0)_
OR instr(objUser.Get("Name"),LAC1)_
OR instr(objUser.Get("Name"),LAC2)_
OR instr(objUser.Get("Name"),LAC3) then
ChkLAcc=true
Set objUser = Nothing
exit function
end if
End Function
'104
SUB CrArrWeek(FDQNAccName)
Set oUser = GetObject(FDQNAccName)
LoginHours = oUser.LoginHours
for k=0 to 6
for y=1 to 3
n=n+1
'msgbox midb(LoginHours,n,1)
WeekAccess1(k,y-1)=midb(LoginHours,n,1)
next
'msgbox Cstr(ascb(WeekAccess1(k,0)))&Cstr(ascb(WeekAccess1(k,1)))&Cstr(ascb(WeekAccess1(k,2)))
next
End SUB
[/more] можешь использовать его как "рыбу", т.к. он только сохраняет в файл текущие параметры, а т.к. UpoUser.Put "LogonHours", rLoginHours, когда пытаемся обновить из файла у меня выдает сообщение, что типа такой параметр уже есть и не меняет значения, мне не охота его доводить до финала...(