подскажите каким скриптом отключить сетевое подключение "подключение по локальной сети" для windows xp ?
» Автоматизация администрирования. Часть 2
Народ, такая проблема. Хочу написать скрипт, который, на основании того, в каком OU расположен пользовател, автоматически перемещал компьютер из Computers в нужный OU.
Вот скрипт, который перемещает компьютер в OU под именем PD01.
On Error Resume Next
strComputer="."
strCompDN = "cn=Computers,dc=011,dc=087,dc=pfr,dc=ru"
arrComputers = Array("localhost")
For Each strComputer In arrComputers
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTDomain",,48)
For Each objItem In colItems
compname = CStr(objItem.Caption)
compnamestr = "cn=" & compname & ","
strOUDN = "ou=PD01,ou=UPFR11,dc=011,dc=087,dc=pfr,dc=ru"
set objComp = GetObject("LDAP://" & compnamestr & strCompDN)
set objOU = GetObject("LDAP://" & strOUDN)
objOU.MoveHere objComp.ADsPath, objComp.Name
next
next
1) Этот скрипт работает только под администратором домена, хотелось бы, чтобы под любым пользователем.
2) Компьютер перемещается только в OU с именем PD01. Местоположение пользователя не определяется (т.е. его PD**), приходится создавать групповую политику для каждого PD** (хотя это уже пол беды).
Вот скрипт, который перемещает компьютер в OU под именем PD01.
On Error Resume Next
strComputer="."
strCompDN = "cn=Computers,dc=011,dc=087,dc=pfr,dc=ru"
arrComputers = Array("localhost")
For Each strComputer In arrComputers
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTDomain",,48)
For Each objItem In colItems
compname = CStr(objItem.Caption)
compnamestr = "cn=" & compname & ","
strOUDN = "ou=PD01,ou=UPFR11,dc=011,dc=087,dc=pfr,dc=ru"
set objComp = GetObject("LDAP://" & compnamestr & strCompDN)
set objOU = GetObject("LDAP://" & strOUDN)
objOU.MoveHere objComp.ADsPath, objComp.Name
next
next
1) Этот скрипт работает только под администратором домена, хотелось бы, чтобы под любым пользователем.
2) Компьютер перемещается только в OU с именем PD01. Местоположение пользователя не определяется (т.е. его PD**), приходится создавать групповую политику для каждого PD** (хотя это уже пол беды).
ShafMAN
Если прсто из сценария утановить или разорвать соединение то
rasdial имя_подключения [имя_пользователя [{пароль|*}]] [/domain:домен] [/phone:номер_телефона] [/callback:номер_для_ответного_вызова] [/phonebook:путь_к_телефонной_книге] [/prefixsuffix]
rasdial [имя_подключения] /disconnect
Если прсто из сценария утановить или разорвать соединение то
rasdial имя_подключения [имя_пользователя [{пароль|*}]] [/domain:домен] [/phone:номер_телефона] [/callback:номер_для_ответного_вызова] [/phonebook:путь_к_телефонной_книге] [/prefixsuffix]
rasdial [имя_подключения] /disconnect
Цитата:
1) Этот скрипт работает только под администратором домена, хотелось бы, чтобы под любым пользователем.
Интересно девки пляшут)))))). Может тебе ваще на 98 перейти? -- там ваще никаких проблем с правами не будет
YNY
Ты по нормальному разговаривать умеешь? Сам скрипт выполняется под любым аккаунтом, а вот компы двигаются только под администратором домена. Вернее не так. На моем компе даже под любым аккаунтом, а вот на остальных под теми же аккаунтами не двигаются.
Ты по нормальному разговаривать умеешь? Сам скрипт выполняется под любым аккаунтом, а вот компы двигаются только под администратором домена. Вернее не так. На моем компе даже под любым аккаунтом, а вот на остальных под теми же аккаунтами не двигаются.
подскажите каким скриптом отключить сетевое подключение "подключение по локальной сети" для windows xp ?
набери netsh /?
mrmarvin
Computer = "."
Set WMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
' Выбираем нужный сетевой адаптер
Set NetAdapter = WMIService.ExecQuery _
("Select * from Win32_NetworkAdapter where Name='VIA Rhine II Fast Ethernet Adapter'")
' Отключаем сетевой адаптер (3 --- включить, 4 --- выключить)
NetAdapter.StatusInfo = 4
NetAdapter.Put_
Computer = "."
Set WMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
' Выбираем нужный сетевой адаптер
Set NetAdapter = WMIService.ExecQuery _
("Select * from Win32_NetworkAdapter where Name='VIA Rhine II Fast Ethernet Adapter'")
' Отключаем сетевой адаптер (3 --- включить, 4 --- выключить)
NetAdapter.StatusInfo = 4
NetAdapter.Put_
Народ, помогите.
Ещё не успел выучить vbs, но нужно позарез написать скрипт на запуск exe'шника с определенными ключами. Помогите кому не лень. В домене уже есть скрипты, я туда дописал, вроде бы правильно, прицеплен он к стартапу компов в ГП, но выполнение скриптов для машин идет невероятно долго и так и не выполняется, хотя если этот самый дописанный мною скрипт выполнять юзером, то все выполняется на ура... поэтому может подскажите, как написать короткий, только для этой задачи...
Ещё не успел выучить vbs, но нужно позарез написать скрипт на запуск exe'шника с определенными ключами. Помогите кому не лень. В домене уже есть скрипты, я туда дописал, вроде бы правильно, прицеплен он к стартапу компов в ГП, но выполнение скриптов для машин идет невероятно долго и так и не выполняется, хотя если этот самый дописанный мною скрипт выполнять юзером, то все выполняется на ура... поэтому может подскажите, как написать короткий, только для этой задачи...
vlazari
Цитата:
наверное Вы никогда не пытались это сделать в WinXp
тк на Win2K3 netsh interface set interface LAN disabled
работает а на WinXp нет (даже на форуме M$'а это пишут
Etalon
Цитата:
Строка: 10
Символ: 1
Объект не поддерживает это свойство или метод:
NetAdapter.StatusInfo
Цитата:
набери netsh /?
наверное Вы никогда не пытались это сделать в WinXp
тк на Win2K3 netsh interface set interface LAN disabled
работает а на WinXp нет (даже на форуме M$'а это пишут
Etalon
Цитата:
Computer = "."
Set WMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
' Выбираем нужный сетевой адаптер
Set NetAdapter = WMIService.ExecQuery _
("Select * from Win32_NetworkAdapter where Name='LAN'")
' Отключаем сетевой адаптер (3 --- включить, 4 --- выключить)
NetAdapter.StatusInfo = 4
NetAdapter.Put_
Строка: 10
Символ: 1
Объект не поддерживает это свойство или метод:
NetAdapter.StatusInfo
Цитата:
На моем компе даже под любым аккаунтом, а вот на остальных под теми же аккаунтами не двигаются.
ну если ту себя сделал админом домена, то что тут удивительного
насколько я знаю, двигать можно тока под админом, иначе любой дурак ТАК начнёт двигать, что заколебёшься вертать назад
Добавлено:
AnteC
http://softwarecommunity.intel.com/isn/Community/en-US/forums/permalink/30233496/30234118/ShowThread.aspx#30234118
Никто шаблоном не поделится?
DmyDry
strDiskpartCmd = Chr(34) & "c:\windows\system32\diskpart.exe " & Chr(34) & "/s " & Chr(34) & "c:\Windows\Temp\cmd.txt" & Chr(34)
WScript.Echo strDiskpartCmd
WshShell.Run(strDiskpartCmd)
strDiskpartCmd = Chr(34) & "c:\windows\system32\diskpart.exe " & Chr(34) & "/s " & Chr(34) & "c:\Windows\Temp\cmd.txt" & Chr(34)
WScript.Echo strDiskpartCmd
WshShell.Run(strDiskpartCmd)
Вообщем такая задача. Нужно проверить все носители, у далить на тех, на которых возможно картинки в формате *.jpg которые были созданы после определённого дня. Написал вот такой скрипт. Если его запускать указав определённую букву диска, на котором записать пару папок с подпапками и туда раскидать картинки то скрипт работает на ура. Когда начал запускать на VMware скрипт захлебунлся на моменте получения списка папок. fso.GetFolders - пишет недостаточно памяти в Sub Descend. Какие есть мысли? Как это можно обойти? Или принцип моего решения вообще не верный?
Код:
Dim fso, D, FileSys, drive
Dim objdrives
Dim objDrive
Age = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set objdrives = fso.Drives
For Each objDrive In objdrives
If objDrive.IsReady Then
'if (objDrive.DriveLetter="H") then
Set D = fso.GetDrive(objDrive.DriveLetter)
FileSys = D.FileSystem
If ((FileSys="NTFS") or (FileSys="FAT") or (FileSys="FAT32")) then
's = s & objDrive.DriveLetter & " - " & FileSys & vbCrLf
call del(objDrive.DriveLetter)
end if
'end if
end if
Next
'MsgBox s
sub del(drive)
Set arg = WScript.Arguments
If arg.Count > 0 Then
Call Descend(arg(0))
Else
drive2=drive+":"
Call Descend(drive2)
End if
end sub
Sub ArcCheck(file)
If DateDiff("d", file.DateLastModified, Now()) < Age Then
'WScript.Echo "Файлы младше 2 дней: " & file.Name
file.Delete(True)
Else
'WScript.Echo "Файлы которые не будут удалены: " & file.Name
End if
End Sub
Sub Descend(spec)
Dim d, f, s
Set d = fso.GetFolder(spec)
For Each f In d.Files
s = fso.GetExtensionName(f)
If StrComp(s, "jpg", 1) = 0 Or StrComp(s, "jpeg", 1) = 0 Then
Call ArcCheck(f)
End if
Next
' check subfolders
For Each f In d.SubFolders
Call Descend(f)
Next
End Sub
Код:
Dim fso, D, FileSys, drive
Dim objdrives
Dim objDrive
Age = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set objdrives = fso.Drives
For Each objDrive In objdrives
If objDrive.IsReady Then
'if (objDrive.DriveLetter="H") then
Set D = fso.GetDrive(objDrive.DriveLetter)
FileSys = D.FileSystem
If ((FileSys="NTFS") or (FileSys="FAT") or (FileSys="FAT32")) then
's = s & objDrive.DriveLetter & " - " & FileSys & vbCrLf
call del(objDrive.DriveLetter)
end if
'end if
end if
Next
'MsgBox s
sub del(drive)
Set arg = WScript.Arguments
If arg.Count > 0 Then
Call Descend(arg(0))
Else
drive2=drive+":"
Call Descend(drive2)
End if
end sub
Sub ArcCheck(file)
If DateDiff("d", file.DateLastModified, Now()) < Age Then
'WScript.Echo "Файлы младше 2 дней: " & file.Name
file.Delete(True)
Else
'WScript.Echo "Файлы которые не будут удалены: " & file.Name
End if
End Sub
Sub Descend(spec)
Dim d, f, s
Set d = fso.GetFolder(spec)
For Each f In d.Files
s = fso.GetExtensionName(f)
If StrComp(s, "jpg", 1) = 0 Or StrComp(s, "jpeg", 1) = 0 Then
Call ArcCheck(f)
End if
Next
' check subfolders
For Each f In d.SubFolders
Call Descend(f)
Next
End Sub
Хм запустил на своей машине всё работает, тога загрузка процессора 100% wscript.exe, как этого можно избежать?
Сценарий сканирует указанные каталоги и
удаляет в нем файлы с указанными расширениями
Код:
Option Explicit
'err.raise 1, "Achtung!", "для запуска закоментировать строку генерации ошибки"
'1) Задать папки для поиска в массив aFolders, например "C:\","E:\"
'2) задать расширения файлов в массив aExtensions, например "mp3","avi","wma"
'3) задать путь и файл для логирования LogFileName1 , например "d:\temp\i.txt"
'см. дальше по тексту...
'Сценарий сканирует указанные каталоги и
'удаляет в нем файлы с указанными расширениями
'
'
Dim LogFileName1
'dim NameFileOfMessage
dim TextOfMessage
Dim aFolders 'массив каталогов
Dim aExtensions 'массив расширений файлов
dim file1
dim FileOfMessage
'1) Задать папки для поиска в массив aFolders, например aFolders = Array("C:\","E:\")
aFolders = Array("D:\")
'2) задать расширения файлов в массив aExtensions, например aExtensions = Array( "mp3","avi","wma")
aExtensions = Array( "id","nsf")
Dim fso
'3) задать путь и файл для логирования LogFileName1 , например LogFileName1 = CStr("d:\temp\i.txt")
LogFileName1 = CStr("c:\Log_Delete_Incoming.txt")
'
'4) пункт убран
'
'5)текст сообщения, которое будет в файле в папке где был удалён файл
TextOfMessage = CStr("Администрация предупреждает: ")
Set fso = CreateObject("Scripting.FileSystemObject")
Set file1 = fso.OpenTextFile(LogFileName1,8,true)
Dim i
file1.WriteLine "----------- начало поиска --------------" & cstr(Date()) & "|" & cstr(Time())
For i = 0 To UBound(aFolders)
If fso.FolderExists(aFolders(i)) Then
on error resume next
Err.Clear
Dim folder
Set folder = fso.GetFolder(aFolders(i))
Dim file
For Each file In folder.Files
if Err then
file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
exit for
End If
If IsKnowExtensions(file) Then
Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
FileOfMessage.WriteLine (TextOfMessage)
FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
FileOfMessage.close
file.Delete True
end if
Next
dim subFolder
For Each subFolder In folder.SubFolders
if Err then
exit for
end if
ScanSubFolder subFolder
Next
end if
Next
file1.WriteLine "----------- конец поиска --------------" & cstr(Date()) & "|" & cstr(Time())
file1.close
Function IsKnowExtensions(file)
Dim strExtensions
strExtensions = fso.GetExtensionName(file.Path)
Dim i
For i = 0 To UBound(aExtensions) '- 1
If ucase(strExtensions) = ucase(aExtensions(i)) Then
'msgbox "!"
file1.WriteLine (cstr(Date()) & "|" & cstr(Time()) &" был Удалён : " & file.Path )
IsKnowExtensions = True
Exit Function
End If
Next
IsKnowExtensions = False
End Function
Sub ScanSubFolder(folder)
Dim file
on error resume next
Err.Clear
For Each file In folder.Files
if Err then
file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
Err.Clear
exit sub
end if
If IsKnowExtensions(file) Then
Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
FileOfMessage.WriteLine (TextOfMessage)
FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
FileOfMessage.close
file.Delete true
end if
Next
Dim subFolder
For Each subFolder In folder.SubFolders
ScanSubFolder subFolder
Next
End Sub
удаляет в нем файлы с указанными расширениями
Код:
Option Explicit
'err.raise 1, "Achtung!", "для запуска закоментировать строку генерации ошибки"
'1) Задать папки для поиска в массив aFolders, например "C:\","E:\"
'2) задать расширения файлов в массив aExtensions, например "mp3","avi","wma"
'3) задать путь и файл для логирования LogFileName1 , например "d:\temp\i.txt"
'см. дальше по тексту...
'Сценарий сканирует указанные каталоги и
'удаляет в нем файлы с указанными расширениями
'
'
Dim LogFileName1
'dim NameFileOfMessage
dim TextOfMessage
Dim aFolders 'массив каталогов
Dim aExtensions 'массив расширений файлов
dim file1
dim FileOfMessage
'1) Задать папки для поиска в массив aFolders, например aFolders = Array("C:\","E:\")
aFolders = Array("D:\")
'2) задать расширения файлов в массив aExtensions, например aExtensions = Array( "mp3","avi","wma")
aExtensions = Array( "id","nsf")
Dim fso
'3) задать путь и файл для логирования LogFileName1 , например LogFileName1 = CStr("d:\temp\i.txt")
LogFileName1 = CStr("c:\Log_Delete_Incoming.txt")
'
'4) пункт убран
'
'5)текст сообщения, которое будет в файле в папке где был удалён файл
TextOfMessage = CStr("Администрация предупреждает: ")
Set fso = CreateObject("Scripting.FileSystemObject")
Set file1 = fso.OpenTextFile(LogFileName1,8,true)
Dim i
file1.WriteLine "----------- начало поиска --------------" & cstr(Date()) & "|" & cstr(Time())
For i = 0 To UBound(aFolders)
If fso.FolderExists(aFolders(i)) Then
on error resume next
Err.Clear
Dim folder
Set folder = fso.GetFolder(aFolders(i))
Dim file
For Each file In folder.Files
if Err then
file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
exit for
End If
If IsKnowExtensions(file) Then
Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
FileOfMessage.WriteLine (TextOfMessage)
FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
FileOfMessage.close
file.Delete True
end if
Next
dim subFolder
For Each subFolder In folder.SubFolders
if Err then
exit for
end if
ScanSubFolder subFolder
Next
end if
Next
file1.WriteLine "----------- конец поиска --------------" & cstr(Date()) & "|" & cstr(Time())
file1.close
Function IsKnowExtensions(file)
Dim strExtensions
strExtensions = fso.GetExtensionName(file.Path)
Dim i
For i = 0 To UBound(aExtensions) '- 1
If ucase(strExtensions) = ucase(aExtensions(i)) Then
'msgbox "!"
file1.WriteLine (cstr(Date()) & "|" & cstr(Time()) &" был Удалён : " & file.Path )
IsKnowExtensions = True
Exit Function
End If
Next
IsKnowExtensions = False
End Function
Sub ScanSubFolder(folder)
Dim file
on error resume next
Err.Clear
For Each file In folder.Files
if Err then
file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
Err.Clear
exit sub
end if
If IsKnowExtensions(file) Then
Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
FileOfMessage.WriteLine (TextOfMessage)
FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
FileOfMessage.close
file.Delete true
end if
Next
Dim subFolder
For Each subFolder In folder.SubFolders
ScanSubFolder subFolder
Next
End Sub
Teo
Dim WshShell
strDiskpartCmd = Chr(34) & "\\connect\EVEREST\USER\everest.exe /ACCEPTBG /SILENT" & Chr(34) & "/s" & Chr(34) & "c:\Windows\Temp\cmd.txt" & Chr(34)
WScript.Echo strDiskpartCmd
WshShell.Run(strDiskpartCmd)
Вот так выглядит, но не пашет, пишет
Требуется объект: "
Dim WshShell
strDiskpartCmd = Chr(34) & "\\connect\EVEREST\USER\everest.exe /ACCEPTBG /SILENT" & Chr(34) & "/s" & Chr(34) & "c:\Windows\Temp\cmd.txt" & Chr(34)
WScript.Echo strDiskpartCmd
WshShell.Run(strDiskpartCmd)
Вот так выглядит, но не пашет, пишет
Требуется объект: "
abasov во первых твой пример не делает то что надо мне, а именно самопоиск дисков определение файловой системы и поиск по ним файлов, я уже не говорю о сроке жизни файлов которые надо удалить. А во вторых алгоритм поиска файлов тот же самый.
AnteC
Если Вы используете Windows Vista или Windows Server 2008 то должен работать метод
...
NetAdapter.Disable
Если Вы используете Windows Vista или Windows Server 2008 то должен работать метод
...
NetAdapter.Disable
DmyDry
не тупи...
я ж те дал свой пример
а ты его один-в-один почти перекопировал
у меня дискпарт запускается с ключиком /s
а у тебя что?
CHR(34) - это кавычка
& - конкатенация строк (объединение)
поэтому у меня "длинный путь с пробелами к diskpart.exe" & "/s" & "длинный путь с пробелами к файлу ответов"
Добавлено:
abasov
боже... скока кода...
а в юнихе:
find /dir -iname *.ext -exec rm '{}' \;
разница, да?
Добавлено:
ну можна -Ntime добавить по вкусу, если надо убивать по критерию "старости"
не тупи...
я ж те дал свой пример
а ты его один-в-один почти перекопировал
у меня дискпарт запускается с ключиком /s
а у тебя что?
CHR(34) - это кавычка
& - конкатенация строк (объединение)
поэтому у меня "длинный путь с пробелами к diskpart.exe" & "/s" & "длинный путь с пробелами к файлу ответов"
Добавлено:
abasov
боже... скока кода...
а в юнихе:
find /dir -iname *.ext -exec rm '{}' \;
разница, да?
Добавлено:
ну можна -Ntime добавить по вкусу, если надо убивать по критерию "старости"
Цитата:
На моем компе даже под любым аккаунтом, а вот на остальных под теми же аккаунтами не двигаются.
зайди под собой на любом компе и запускай скрипт
Добавлено:
Цитата:
а в юнихе:
find /dir -iname *.ext -exec rm '{}' \;
а где проверка по дате? а так нечто подобное мона и в bat своять может чуть длиньше но используя тот же find и "<", ">"
Знающие люди, скажите, а можно ли с помощью xcacls.vbs дать пользователю такое право на папку: "чтение (применять только для этой папки)".
То есть флаг наследования не трогать, но пользователь не сможет во вложеные папки попасть. Если можно, то как?
Добавлено:
Всё, разобрался. Оказалось что в статье на майкрософте не полная справка. Если запустить скрипт с параметром /?, то там больше информации.
То есть флаг наследования не трогать, но пользователь не сможет во вложеные папки попасть. Если можно, то как?
Добавлено:
Всё, разобрался. Оказалось что в статье на майкрософте не полная справка. Если запустить скрипт с параметром /?, то там больше информации.
6
YNY
Цитата:
грю же, можно втыкать [m,a,c]time по вкусу =)
Цитата:
ну-ну
проще cygwin поставить и поюзать там эту же команду
кстати, если не ошибаюсь, если правильно поставить cygwin, то cmd будет знать команду ls, rm, find и иже с ними
Цитата:
а где проверка по дате?
грю же, можно втыкать [m,a,c]time по вкусу =)
Цитата:
а так нечто подобное мона и в bat своять может чуть длиньше но используя тот же find и "<", ">"
ну-ну
проще cygwin поставить и поюзать там эту же команду
кстати, если не ошибаюсь, если правильно поставить cygwin, то cmd будет знать команду ls, rm, find и иже с ними
Использую WSH для отправки писем через SMTP провайдера. Возможно ли добавить функционал, чтобы на адрес отправителя автоматом приходило уведомление о доставке письма адресату? MSDN смотрел, ничего на эту тему не нашлось...
Код: Set Message = CreateObject("CDO.Message")
With Message
.From = "xxx@yandex.ru"
.To = "xxx@zaural.ru"
With .Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.infocentr.ru"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
.Send
End With
Код: Set Message = CreateObject("CDO.Message")
With Message
.From = "xxx@yandex.ru"
.To = "xxx@zaural.ru"
With .Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.infocentr.ru"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
.Send
End With
SPV_Ed, через какой почтовк ты письма посылаешь?
p.s. Можно сделать через групповые политики (через шаблоны для outlook-а)
p.s. Можно сделать через групповые политики (через шаблоны для outlook-а)
Народ а как вытащить хеши md5 юзеров из AD? очень надо, надо пробежаться по OU и собрать все пароли
Цитата:
через какой почтовк ты письма посылаешь?
Через провайдерский SMTP, как уже говорилось.
PS Ответ на свой вопрос нашел здесь: http://support.microsoft.com/kb/302839
Вот нашел у себя скриптик Создание Файл Сервера с Паками Отделов пользователей на основе структуры AD с расдачей прав доступа К папкам оделов имеют доступ все кто в ходят в соответсвующую группу а к пользователей тока сами пользователи. ну и про себя конечно не забудем
скритп писался пару лет назад возможно буду ошибки
[more]
Код:
[no]
//Greate SidSalmon
//
//****************************************************************
var strComputer = "."; // not change
var Path="F:\\ShareFolderForUser"; // Root folder for Share Folder
var AdminUser="ADMINgROUP"; // УНИКАЛЬНОЕ НАЗВАНИЕ ГРУПЫ С ПРАВАМИ ПОЛНОГО ДОСТУПА
var ViewUser="vIEWgROUP" ; УНИКАЛЬНОЕ НАЗВАНИЕ ГРУПЫ С ПРАВАМИ ТОЛЬКОДЛЯ ЧТЕНИЯ ДОСТУПА
var strComputer = "."; // not change
var PatchVol= "F:\\" ;
//****************************************************************
//Option Explicit
//Declare Global Variables
var OnlyWrite,ReadDirectory, ReadOnly, ModifyOnly, FullControl, WR, RD, RX, MO, FU;
var WMI, SecDescriptor, objFSO, objFile, objTextFile, colDiskQuotas; // Scripting object
var Trust, SecDes, User; // var object
var objOU, objOrg, objUser, objUser1, Group, objUsrQ, User; //
var Path, ShareDescr, NewFolderName, retvalue, SelectStr, strComputer;
var i, j;
var ACE1 = new Array();
//************************* NOT CHANGE ***************************************************************
//*** var CONSTANT
var ForReading = 1;
var ForWrite = 2;
var ForAppending = 2;
//*** Share types
var DiskShare = 0;
var PrintShare = 1;
var DevShare = 2;
var IPCShare = 3;
var DriveAdminShare = 2147483648;
var PrintAdminShare = 2147483649;
var DevAdminShare = 2147483650;
var IPCAdminShare = 2147483651;
var MaxAllowed = 0;
//*** Access masks - Share, File, Folder.
var F_List = 1; //can read a file or list folder contents
var F_Add = 2; //can write to a file or add a file to a folder
var F_Append = 4; //can append to a file or add a subfolder to a folder
var F_Rd_EA = 8; //can read Extended Attributes
var F_Wr_EA = 16; //can write Extended Attributes
var F_Ex_Trav = 32; //can execute a file or traverse folders
var F_Del_Child = 64; //can delete a folder And its contents, even RO files
var F_Rd_Attr = 128; //can read attributes
var F_Wr_Attr = 256; //can write attributes
var F_Delete = 65536; //can delete files And folders
var F_Rd_Contr = 131072; //assigns read access for this user
var F_Wr_DAC = 262144; //can change DACL
var F_Wr_Owner = 524288; //can take ownership
var F_Synch = 1048576; //synch changes And wait for synch
//*** Default combinations of Access masks - Share, File, Folder.
WR = F_Wr_Attr + F_Wr_EA + F_Append + F_Add;
RD = F_Rd_Contr + F_Rd_Attr + F_Rd_EA + F_List;
RX = RD + F_Ex_Trav;
MO = RX + WR + F_Delete;
FU = MO + F_Wr_Owner + F_Wr_DAC + F_Del_Child;
OnlyWrite = WR + F_Synch;
ReadDirectory = RD + F_Synch;
ReadOnly = RX + F_Synch;
ModifyOnly = MO + F_Synch;
FullControl = FU + F_Synch;
//*** ACE type
var Allow = 0; //allows access
var Deny = 1; //denies access
var Audit = 2; //audits access
//*** ACE flags
var ObjInh = 1; //non-container children inherit this ace
var ContInh = 2; //container objects inherit this ACE
var WorkInh = 3; //container objects inherit this ACE
var NoProp = 4; //do not propagate beyond first child
var InhOnly = 8; //only controls access to children
var InhAce = 16; //only controls access to children
//*** SecurityDescriptor ControlFlags
var SE_OWNER_DEFAULTED = 1; //A default mechanism, rather than the original provider of the security descriptor, provided the security descriptor//s owner security identifier (SID).
var SE_GROUP_DEFAULTED = 2; //A default mechanism, rather than the original provider of the security descriptor, provided the security descriptor//s group SID.
var SE_DACL_PRESENT = 4; //Indicates a security descriptor that has a DACL. If this flag is not var, or if this flag is var and the DACL is NULL, the security descriptor allows full access to everyone.
var SE_DACL_DEFAULTED = 8; //Indicates a security descriptor with a default DACL. For example, if an object//s creator does not specify a DACL, the object receives the default DACL from the creator//s access token. This flag can affect how the system treats the DACL, with respect to ACE inheritance. The system ignores this flag if the SE_DACL_PRESENT flag is not var.
var SE_SACL_PRESENT = 16; //Indicates a security descriptor that has a SACL.
var SE_SACL_DEFAULTED = 32; //A default mechanism, rather than the original provider of the security descriptor, provided the SACL. This flag can affect how the system treats the SACL, with respect to ACE inheritance. The system ignores this flag if the SE_SACL_PRESENT flag is not var.
var SE_DACL_AUTO_INHERIT_REQ = 256; //Requests that the provider for the object protected by the security descriptor automatically propagate the DACL to existing child objects. If the provider supports automatic inheritance, it propagates the DACL to any existing child objects, and vars the SE_DACL_AUTO_INHERITED bit in the security descriptors of the object and its child objects.
var SE_SACL_AUTO_INHERIT_REQ = 512; //Requests that the provider for the object protected by the security descriptor automatically propagate the SACL to existing child objects. If the provider supports automatic inheritance, it propagates the SACL to any existing child objects, and vars the SE_SACL_AUTO_INHERITED bit in the security descriptors of the object and its child objects.
var SE_DACL_AUTO_INHERITED = 1024; //Windows 2000 only. Indicates a security descriptor in which the DACL is var up to support automatic propagation of inheritable ACEs to existing child objects. The system vars this bit when it performs the automatic inheritance algorithm for the object and its existing child objects. This bit is not var in security descriptors for Windows NT versions 4.0 and earlier, which do not support automatic propagation of inheritable ACEs.
var SE_SACL_AUTO_INHERITED = 2048; //Windows 2000: Indicates a security descriptor in which the SACL is var up to support automatic propagation of inheritable ACEs to existing child objects. The system vars this bit when it performs the automatic inheritance algorithm for the object and its existing child objects. This bit is not var in security descriptors for Windows NT versions 4.0 and earlier, which do not support automatic propagation of inheritable ACEs.
var SE_DACL_PROTECTED = 4096; //Windows 2000: Prevents the DACL of the security descriptor from being modified by inheritable ACEs.
var SE_SACL_PROTECTED = 8192; //Windows 2000: Prevents the SACL of the security descriptor from being modified by inheritable ACEs.
var SE_SELF_RELATIVE = 32768; //Indicates a security descriptor in self-relative format with all the security information in a contiguous block of memory. If this flag is not var, the security descriptor is in absolute format. For more information, see Absolute and Self-Relative Security Descriptors in the Platform SDK section Low-Level Access-Control.
function Main(){
//****************************************************************
//****************************************************************
objFSO = new ActiveXObject("Scripting.FileSystemObject");
if (!objFSO.FolderExists(Path))
objFSO.CreateFolder(Path);
if (!objFSO.FileExists(Path + "\\ShareFolder.log")) {
objTextFile = objFSO.CreateTextFile(Path + "\\ShareFolder.log");
}
else {
objTextFile = objFSO.OpenTextFile(Path + "\\ShareFolder.log", ForAppending, 'True');
}
QuotasInit(PatchVol);
WMI = GetObject("winmgmts://" + strComputer + "/root/cimv2");
SecDescriptor = WMI.Get("Win32_SecurityDescriptor").SpawnInstance_();
SecDescriptor.ControlFlags = SE_DACL_PROTECTED + SE_DACL_PRESENT + SE_GROUP_DEFAULTED + SE_OWNER_DEFAULTED + SE_DACL_AUTO_INHERITED;
AdminRight();
//************** Create Folder for AD User and OU Group
var objOU = GetObject("LDAP://DC=matrix");
var e1 = new Enumerator(objOU);
for(;!e1.atEnd ();e1.moveNext ()){
objOrg = e1.item ();
if (objOrg.ou > "" ) {
PrintF(objOrg.ou)
if (!objFSO.FolderExists(Path + "\\" + objOrg.ou)){
objFSO.CreateFolder(Path + "\\" + objOrg.ou);
}
PrintF ("LDAP://ou=" + objOrg.ou + ",DC=matrix");
var objUser = GetObject("LDAP://ou=" + objOrg.ou + ",DC=matrix");
var e2 = new Enumerator(objUser);
for(;!e2.atEnd ();e2.moveNext ()){
objUser1 = e2.item ();
if (objUser1.sAMAccountName > "" ) {
NewFolderName = Path +"\\" + objOrg.ou + "\\" + objUser1.sAMAccountName;
if (objUser1.sAMAccountName == objUser1.cn && objUser1.sAMAccountType == "268435456" )
SetUserRigthShare(Path + "\\" + objOrg.ou);
if(objUser1.sAMAccountName != objUser1.cn && objUser1.sAMAccountType == "805306368" ){
if (!objFSO.FolderExists(NewFolderName)){
objFSO.CreateFolder(NewFolderName);
retvalue = SetUserRigthLocal(SecDescriptor, NewFolderName);
PrintF(Path +"\\" + objOrg.ou + "\\" + objUser1.sAMAccountName +" Create OK");
}
else {
PrintF(Path +"\\" + objOrg.ou + "\\" + objUser1.sAMAccountName +"All ready exist");
}
}
}
}
}
}
//objTextFile.close
}
function AdminRight(){
i = 0;
var AdminUserList = AdminUser.split(",")
var eA = new Enumerator(AdminUserList);
for(;!eA.atEnd ();eA.moveNext ()){
Admin = eA.item();
ACE1[i]= SelectRight(Admin, FullControl,WorkInh);
i++;
}
var ViewUserList = ViewUser.split(",")
var eB = new Enumerator(ViewUserList);
for(;!eB.atEnd ();eB.moveNext ()){
View = eB.item();
ACE1[i]= SelectRight(View, ReadOnly, WorkInh);
i++;
}
}
function SetUserRigthShare(Path){
ACE1[i] = SelectRight(objUser1.sAMAccountName, FullControl, ContInh);
SecDescriptor.DACL = ACE1;
CreateShare(SecDescriptor, objUser1.sAMAccountName, Path);
retvalue = ShareSecF(objUser1.sAMAccountName, SecDescriptor);
}
function SelectRight(AccountName, Right, Nas){
Group = WMI.ExecQuery("Select Name, SID from Win32_Account where domain='matrix'and name like '" + AccountName + "%'");
var e = new Enumerator(Group);
for(;!e.atEnd();e.moveNext ()){
User =e.item();
Trust = SetTrustee(User.Domain, User.Name, User.SID );
var ACE2 = SetACE(Right, Nas, Allow, Trust);
}
return(ACE2);
}
/*
var Group = WMI.ExecQuery("Select Domain, Name, SID from Win32_Account where domain='matrix' and name like'%21%'");
var e = new Enumerator(Group);
User ="";
for(;!e.atEnd ();e.moveNext ()){
User =e.item ();
Trust = SetTrustee(WMI, User.Domain, User.Name, User.SID);
ACE1[1] = SetACE(WMI,RX + F_Synch, ContInh, Allow, Trust);
}
*/
function SetUserRigthLocal(Path){
ACE1[i] = SelectRight(objUser1.sAMAccountName, FullControl, WorkInh);
SecDescriptor.DACL = ACE1;
retvalue = LocalSecF(NewFolderName, SecDescriptor);
}
//******** Create the Share Folder
function CreateShare(SecDesc, UserName, FolderName){
var Share;
Share = WMI.Get("Win32_Share");
var InParam = Share.Methods_("Create").inParameters.SpawnInstance_();
InParam.Access = SecDesc;
InParam.Description = UserName;
InParam.Name = UserName;
InParam.Path = FolderName;
InParam.Type = DiskShare;
var OutParam = Share.ExecMethod_("Create", InParam);
// PrintF( UserName & vbTab & "Folder Create")
}
//**** var Local Security ********************
function LocalSecF(FolderUserName, SecDesc){
wmiFileSecSetting = GetObject("winmgmts:Win32_LogicalFileSecuritysetting.path='"+ Path +"\\" + objOrg.ou + "\\" + objUser1.sAMAccountName +"'");
wmiFileSecSetting.setSecurityDescriptor(SecDesc);
}
//**** var Share Security ********************
function ShareSecF(FolderUserName,SecDesc){
wmiShareSecsetting = GetObject("winmgmts:Win32_LogicalShareSecuritysetting.name='"+ FolderUserName+ "'");
wmiShareSecsetting.setSecurityDescriptor(SecDesc);
}
//***************************** system function not change
//********** Create the Trustee object
function SetTrustee(strDomain, strName, strSID){
var Trustee;
var Trustee = WMI.Get("Win32_Trustee").SpawnInstance_();
Trustee.Domain = strDomain;
Trustee.Name = strName;
Trustee.SIDString = strSID;
return(Trustee);
}
//********* Create the ACE object
function SetACE(AccessMask, AceFlags, AceType, Trustee){
var Ace;
var Ace = WMI.Get("Win32_Ace").SpawnInstance_();
Ace.AccessMask = AccessMask;
Ace.AceFlags = AceFlags;
Ace.AceType = AceType;
Ace.Trustee = Trustee;
return(Ace);
}
//********* Convert the SID string to a binary array
function Conv2Bin(WMI, SidStr){
var SID;
var SID = WMI.Get("Win32_SID.SID='" + SidStr + "'");
PrintF(SidStr);
var str = SID.BinaryRepresentation;
return(SID.BinaryRepresentation);
}
function PrintF (Str){
objTextFile.WriteLine(Str);
}
//***************************** system function not change
function QuotasInit(Patch){
colDiskQuotas = new ActiveXObject("Microsoft.DiskQuota.1");
colDiskQuotas.Initialize(PatchVol, 'True');
if (colDiskQuotas.QuotaState != 2){
PrintF("Quota disable");
colDiskQuotas.QuotaState=2;
PrintF("Quota will be enable");
}
else {
PrintF("Quota are enable");
}
colDiskQuotas.DefaultQuotaLimit = 50000000 ;
colDiskQuotas.DefaultQuotaThreshold = 45000000;
}
Main();
[/no]
скритп писался пару лет назад возможно буду ошибки
[more]
Код:
[no]
//Greate SidSalmon
//
//****************************************************************
var strComputer = "."; // not change
var Path="F:\\ShareFolderForUser"; // Root folder for Share Folder
var AdminUser="ADMINgROUP"; // УНИКАЛЬНОЕ НАЗВАНИЕ ГРУПЫ С ПРАВАМИ ПОЛНОГО ДОСТУПА
var ViewUser="vIEWgROUP" ; УНИКАЛЬНОЕ НАЗВАНИЕ ГРУПЫ С ПРАВАМИ ТОЛЬКОДЛЯ ЧТЕНИЯ ДОСТУПА
var strComputer = "."; // not change
var PatchVol= "F:\\" ;
//****************************************************************
//Option Explicit
//Declare Global Variables
var OnlyWrite,ReadDirectory, ReadOnly, ModifyOnly, FullControl, WR, RD, RX, MO, FU;
var WMI, SecDescriptor, objFSO, objFile, objTextFile, colDiskQuotas; // Scripting object
var Trust, SecDes, User; // var object
var objOU, objOrg, objUser, objUser1, Group, objUsrQ, User; //
var Path, ShareDescr, NewFolderName, retvalue, SelectStr, strComputer;
var i, j;
var ACE1 = new Array();
//************************* NOT CHANGE ***************************************************************
//*** var CONSTANT
var ForReading = 1;
var ForWrite = 2;
var ForAppending = 2;
//*** Share types
var DiskShare = 0;
var PrintShare = 1;
var DevShare = 2;
var IPCShare = 3;
var DriveAdminShare = 2147483648;
var PrintAdminShare = 2147483649;
var DevAdminShare = 2147483650;
var IPCAdminShare = 2147483651;
var MaxAllowed = 0;
//*** Access masks - Share, File, Folder.
var F_List = 1; //can read a file or list folder contents
var F_Add = 2; //can write to a file or add a file to a folder
var F_Append = 4; //can append to a file or add a subfolder to a folder
var F_Rd_EA = 8; //can read Extended Attributes
var F_Wr_EA = 16; //can write Extended Attributes
var F_Ex_Trav = 32; //can execute a file or traverse folders
var F_Del_Child = 64; //can delete a folder And its contents, even RO files
var F_Rd_Attr = 128; //can read attributes
var F_Wr_Attr = 256; //can write attributes
var F_Delete = 65536; //can delete files And folders
var F_Rd_Contr = 131072; //assigns read access for this user
var F_Wr_DAC = 262144; //can change DACL
var F_Wr_Owner = 524288; //can take ownership
var F_Synch = 1048576; //synch changes And wait for synch
//*** Default combinations of Access masks - Share, File, Folder.
WR = F_Wr_Attr + F_Wr_EA + F_Append + F_Add;
RD = F_Rd_Contr + F_Rd_Attr + F_Rd_EA + F_List;
RX = RD + F_Ex_Trav;
MO = RX + WR + F_Delete;
FU = MO + F_Wr_Owner + F_Wr_DAC + F_Del_Child;
OnlyWrite = WR + F_Synch;
ReadDirectory = RD + F_Synch;
ReadOnly = RX + F_Synch;
ModifyOnly = MO + F_Synch;
FullControl = FU + F_Synch;
//*** ACE type
var Allow = 0; //allows access
var Deny = 1; //denies access
var Audit = 2; //audits access
//*** ACE flags
var ObjInh = 1; //non-container children inherit this ace
var ContInh = 2; //container objects inherit this ACE
var WorkInh = 3; //container objects inherit this ACE
var NoProp = 4; //do not propagate beyond first child
var InhOnly = 8; //only controls access to children
var InhAce = 16; //only controls access to children
//*** SecurityDescriptor ControlFlags
var SE_OWNER_DEFAULTED = 1; //A default mechanism, rather than the original provider of the security descriptor, provided the security descriptor//s owner security identifier (SID).
var SE_GROUP_DEFAULTED = 2; //A default mechanism, rather than the original provider of the security descriptor, provided the security descriptor//s group SID.
var SE_DACL_PRESENT = 4; //Indicates a security descriptor that has a DACL. If this flag is not var, or if this flag is var and the DACL is NULL, the security descriptor allows full access to everyone.
var SE_DACL_DEFAULTED = 8; //Indicates a security descriptor with a default DACL. For example, if an object//s creator does not specify a DACL, the object receives the default DACL from the creator//s access token. This flag can affect how the system treats the DACL, with respect to ACE inheritance. The system ignores this flag if the SE_DACL_PRESENT flag is not var.
var SE_SACL_PRESENT = 16; //Indicates a security descriptor that has a SACL.
var SE_SACL_DEFAULTED = 32; //A default mechanism, rather than the original provider of the security descriptor, provided the SACL. This flag can affect how the system treats the SACL, with respect to ACE inheritance. The system ignores this flag if the SE_SACL_PRESENT flag is not var.
var SE_DACL_AUTO_INHERIT_REQ = 256; //Requests that the provider for the object protected by the security descriptor automatically propagate the DACL to existing child objects. If the provider supports automatic inheritance, it propagates the DACL to any existing child objects, and vars the SE_DACL_AUTO_INHERITED bit in the security descriptors of the object and its child objects.
var SE_SACL_AUTO_INHERIT_REQ = 512; //Requests that the provider for the object protected by the security descriptor automatically propagate the SACL to existing child objects. If the provider supports automatic inheritance, it propagates the SACL to any existing child objects, and vars the SE_SACL_AUTO_INHERITED bit in the security descriptors of the object and its child objects.
var SE_DACL_AUTO_INHERITED = 1024; //Windows 2000 only. Indicates a security descriptor in which the DACL is var up to support automatic propagation of inheritable ACEs to existing child objects. The system vars this bit when it performs the automatic inheritance algorithm for the object and its existing child objects. This bit is not var in security descriptors for Windows NT versions 4.0 and earlier, which do not support automatic propagation of inheritable ACEs.
var SE_SACL_AUTO_INHERITED = 2048; //Windows 2000: Indicates a security descriptor in which the SACL is var up to support automatic propagation of inheritable ACEs to existing child objects. The system vars this bit when it performs the automatic inheritance algorithm for the object and its existing child objects. This bit is not var in security descriptors for Windows NT versions 4.0 and earlier, which do not support automatic propagation of inheritable ACEs.
var SE_DACL_PROTECTED = 4096; //Windows 2000: Prevents the DACL of the security descriptor from being modified by inheritable ACEs.
var SE_SACL_PROTECTED = 8192; //Windows 2000: Prevents the SACL of the security descriptor from being modified by inheritable ACEs.
var SE_SELF_RELATIVE = 32768; //Indicates a security descriptor in self-relative format with all the security information in a contiguous block of memory. If this flag is not var, the security descriptor is in absolute format. For more information, see Absolute and Self-Relative Security Descriptors in the Platform SDK section Low-Level Access-Control.
function Main(){
//****************************************************************
//****************************************************************
objFSO = new ActiveXObject("Scripting.FileSystemObject");
if (!objFSO.FolderExists(Path))
objFSO.CreateFolder(Path);
if (!objFSO.FileExists(Path + "\\ShareFolder.log")) {
objTextFile = objFSO.CreateTextFile(Path + "\\ShareFolder.log");
}
else {
objTextFile = objFSO.OpenTextFile(Path + "\\ShareFolder.log", ForAppending, 'True');
}
QuotasInit(PatchVol);
WMI = GetObject("winmgmts://" + strComputer + "/root/cimv2");
SecDescriptor = WMI.Get("Win32_SecurityDescriptor").SpawnInstance_();
SecDescriptor.ControlFlags = SE_DACL_PROTECTED + SE_DACL_PRESENT + SE_GROUP_DEFAULTED + SE_OWNER_DEFAULTED + SE_DACL_AUTO_INHERITED;
AdminRight();
//************** Create Folder for AD User and OU Group
var objOU = GetObject("LDAP://DC=matrix");
var e1 = new Enumerator(objOU);
for(;!e1.atEnd ();e1.moveNext ()){
objOrg = e1.item ();
if (objOrg.ou > "" ) {
PrintF(objOrg.ou)
if (!objFSO.FolderExists(Path + "\\" + objOrg.ou)){
objFSO.CreateFolder(Path + "\\" + objOrg.ou);
}
PrintF ("LDAP://ou=" + objOrg.ou + ",DC=matrix");
var objUser = GetObject("LDAP://ou=" + objOrg.ou + ",DC=matrix");
var e2 = new Enumerator(objUser);
for(;!e2.atEnd ();e2.moveNext ()){
objUser1 = e2.item ();
if (objUser1.sAMAccountName > "" ) {
NewFolderName = Path +"\\" + objOrg.ou + "\\" + objUser1.sAMAccountName;
if (objUser1.sAMAccountName == objUser1.cn && objUser1.sAMAccountType == "268435456" )
SetUserRigthShare(Path + "\\" + objOrg.ou);
if(objUser1.sAMAccountName != objUser1.cn && objUser1.sAMAccountType == "805306368" ){
if (!objFSO.FolderExists(NewFolderName)){
objFSO.CreateFolder(NewFolderName);
retvalue = SetUserRigthLocal(SecDescriptor, NewFolderName);
PrintF(Path +"\\" + objOrg.ou + "\\" + objUser1.sAMAccountName +" Create OK");
}
else {
PrintF(Path +"\\" + objOrg.ou + "\\" + objUser1.sAMAccountName +"All ready exist");
}
}
}
}
}
}
//objTextFile.close
}
function AdminRight(){
i = 0;
var AdminUserList = AdminUser.split(",")
var eA = new Enumerator(AdminUserList);
for(;!eA.atEnd ();eA.moveNext ()){
Admin = eA.item();
ACE1[i]= SelectRight(Admin, FullControl,WorkInh);
i++;
}
var ViewUserList = ViewUser.split(",")
var eB = new Enumerator(ViewUserList);
for(;!eB.atEnd ();eB.moveNext ()){
View = eB.item();
ACE1[i]= SelectRight(View, ReadOnly, WorkInh);
i++;
}
}
function SetUserRigthShare(Path){
ACE1[i] = SelectRight(objUser1.sAMAccountName, FullControl, ContInh);
SecDescriptor.DACL = ACE1;
CreateShare(SecDescriptor, objUser1.sAMAccountName, Path);
retvalue = ShareSecF(objUser1.sAMAccountName, SecDescriptor);
}
function SelectRight(AccountName, Right, Nas){
Group = WMI.ExecQuery("Select Name, SID from Win32_Account where domain='matrix'and name like '" + AccountName + "%'");
var e = new Enumerator(Group);
for(;!e.atEnd();e.moveNext ()){
User =e.item();
Trust = SetTrustee(User.Domain, User.Name, User.SID );
var ACE2 = SetACE(Right, Nas, Allow, Trust);
}
return(ACE2);
}
/*
var Group = WMI.ExecQuery("Select Domain, Name, SID from Win32_Account where domain='matrix' and name like'%21%'");
var e = new Enumerator(Group);
User ="";
for(;!e.atEnd ();e.moveNext ()){
User =e.item ();
Trust = SetTrustee(WMI, User.Domain, User.Name, User.SID);
ACE1[1] = SetACE(WMI,RX + F_Synch, ContInh, Allow, Trust);
}
*/
function SetUserRigthLocal(Path){
ACE1[i] = SelectRight(objUser1.sAMAccountName, FullControl, WorkInh);
SecDescriptor.DACL = ACE1;
retvalue = LocalSecF(NewFolderName, SecDescriptor);
}
//******** Create the Share Folder
function CreateShare(SecDesc, UserName, FolderName){
var Share;
Share = WMI.Get("Win32_Share");
var InParam = Share.Methods_("Create").inParameters.SpawnInstance_();
InParam.Access = SecDesc;
InParam.Description = UserName;
InParam.Name = UserName;
InParam.Path = FolderName;
InParam.Type = DiskShare;
var OutParam = Share.ExecMethod_("Create", InParam);
// PrintF( UserName & vbTab & "Folder Create")
}
//**** var Local Security ********************
function LocalSecF(FolderUserName, SecDesc){
wmiFileSecSetting = GetObject("winmgmts:Win32_LogicalFileSecuritysetting.path='"+ Path +"\\" + objOrg.ou + "\\" + objUser1.sAMAccountName +"'");
wmiFileSecSetting.setSecurityDescriptor(SecDesc);
}
//**** var Share Security ********************
function ShareSecF(FolderUserName,SecDesc){
wmiShareSecsetting = GetObject("winmgmts:Win32_LogicalShareSecuritysetting.name='"+ FolderUserName+ "'");
wmiShareSecsetting.setSecurityDescriptor(SecDesc);
}
//***************************** system function not change
//********** Create the Trustee object
function SetTrustee(strDomain, strName, strSID){
var Trustee;
var Trustee = WMI.Get("Win32_Trustee").SpawnInstance_();
Trustee.Domain = strDomain;
Trustee.Name = strName;
Trustee.SIDString = strSID;
return(Trustee);
}
//********* Create the ACE object
function SetACE(AccessMask, AceFlags, AceType, Trustee){
var Ace;
var Ace = WMI.Get("Win32_Ace").SpawnInstance_();
Ace.AccessMask = AccessMask;
Ace.AceFlags = AceFlags;
Ace.AceType = AceType;
Ace.Trustee = Trustee;
return(Ace);
}
//********* Convert the SID string to a binary array
function Conv2Bin(WMI, SidStr){
var SID;
var SID = WMI.Get("Win32_SID.SID='" + SidStr + "'");
PrintF(SidStr);
var str = SID.BinaryRepresentation;
return(SID.BinaryRepresentation);
}
function PrintF (Str){
objTextFile.WriteLine(Str);
}
//***************************** system function not change
function QuotasInit(Patch){
colDiskQuotas = new ActiveXObject("Microsoft.DiskQuota.1");
colDiskQuotas.Initialize(PatchVol, 'True');
if (colDiskQuotas.QuotaState != 2){
PrintF("Quota disable");
colDiskQuotas.QuotaState=2;
PrintF("Quota will be enable");
}
else {
PrintF("Quota are enable");
}
colDiskQuotas.DefaultQuotaLimit = 50000000 ;
colDiskQuotas.DefaultQuotaThreshold = 45000000;
}
Main();
[/no]
Sid Salmon, очень интересно.
Сам писал такой же скрипт, но так и не нашел как раздавать разрешения на папки.
Сам писал такой же скрипт, но так и не нашел как раздавать разрешения на папки.
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
Предыдущая тема: BackUp Win2003Serer
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.