Скрипта который долго ждали большефики.
Юзайте, комментируйте.
'*************************************** *********************************
'* Folder v.02 (универсальный)
'* Скрипт на VBS
'* OS: Win2K server, Win2K Prof, WinXp SP1, WinXpSp2
'*************************************** *********************************
' Состав поставки:
' folder.vbs - сам скрипт.
' folder.txt - файл настроек каталогов сканирования
'*************************************** *********************************
' Скрипт распостраняется по принципу "Как есть". Автор скрипта не несет
' не какой отвественности, и не зачто не отвечает.
' Условия лицензирования: GPL 2.0
' При изменении любого участка скрипта следует уведомить автора, т.е. меня
' об изменениях в коде.
' Распостраннение: разрешается любое бесплатное распостранение любым способом
' с сохранением оригинального скрипта. В случае распостранения/использывания
' модификаций следует указать ссылку на оригинальный скрипт, и вкладывать
' оригинал в комплект.
' Чтото не понятно? чтото хотите поправить? нашли ошибку? пишите.
'*************************************** *********************************
'* Скрипт построения дерева папок с указанного места, с указанием прав
'* доступа на каждую папку.
'* Автор: Дмитрий 'Timon_Crazy' Малыхин
'* E-mail: wct@gorodok.net
'* Blog: http://timon-crazy.livejournal.com/
'*************************************** *********************************
'Процедура получения прав определенной папки, файла
'Вариант для короткой версии
'Построенно на примере от MS
Sub Dasl_mini (strFileName)
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
FILE_ALL_ACCESS = &h1f01ff
FILE_APPEND_DATA = &h000004
FILE_DELETE = &h010000
FILE_DELETE_CHILD = &h000040
FILE_EXECUTE = &h000020
FILE_READ_ATTRIBUTES = &h000080
FILE_READ_CONTROL = &h020000
FILE_READ_DATA = &h000001
FILE_READ_EA = &h000008
FILE_SYNCHRONIZE = &h100000
FILE_WRITE_ATTRIBUTES = &h000100
FILE_WRITE_DAC = &h040000
FILE_WRITE_DATA = &h000002
FILE_WRITE_EA = &h000010
FILE_WRITE_OWNER = &h080000
Set objWMIService = GetObject("winmgmts:")
Set objFileSecuritySettings = _
objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
intControlFlags = objSD.ControlFlags
if intControlFlags AND SE_DACL_PRESENT Then
arrACEs = objSD.DACL
For Each objACE in arrACEs
TFm.Write "<br>Пользователь: <FONT COLOR=""GREEN"">"&objACE.Trustee.Domain & "\" & objACE.Trustee.Name&"</FONT><br>"
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
TFm.Write vbTab & "Разрешенно:<br>"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
TFm.Write vbTab & "Запрещенно:<br>"
End If
If objACE.AccessMask AND FILE_ALL_ACCESS Then
TFm.Write vbTab & vbTab & "Полный доступ<br>"
End If
If objACE.AccessMask AND FILE_APPEND_DATA Then
TFm.Write vbTab & vbTab & "Создание папок / Дозапись новых файлов<br>"
End If
If objACE.AccessMask AND FILE_DELETE Then
TFm.Write vbTab & vbTab & "Удаление<br>"
End If
If objACE.AccessMask AND FILE_DELETE_CHILD Then
TFm.Write vbTab & vbTab & "Удалять вложенние<br>"
End If
If objACE.AccessMask AND FILE_EXECUTE Then
TFm.Write vbTab & vbTab & "Запуск файла<br>"
End If
'Если Вам нужны эти права раскоментируйте
'' If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
'' TFm.Write vbTab & vbTab & "Чтение атрибутов<br>"
'' End If
'' If objACE.AccessMask AND FILE_READ_CONTROL Then
'' TFm.Write vbTab & vbTab & "FILE_READ_CONTROL <br>"
'' End If
If objACE.AccessMask AND FILE_READ_DATA Then
TFm.Write vbTab & vbTab & "Чтение<br>"
End If
'' If objACE.AccessMask AND FILE_READ_EA Then
'' TFm.Write vbTab & vbTab & "FILE_READ_EA <br>"
'' End If
'' If objACE.AccessMask AND FILE_SYNCHRONIZE Then
'' TFm.Write vbTab & vbTab & "FILE_SYNCHRONIZE <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_ATTRIBUTES <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_DAC Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_DAC <br>"
'' End If
If objACE.AccessMask AND FILE_WRITE_DATA Then
TFm.Write vbTab & vbTab & "Запись<br>"
End If
'' If objACE.AccessMask AND FILE_WRITE_EA Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_EA <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_OWNER Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_OWNER <br>"
'' End If
Next
Else
TFm.Write "Не возможно получить данные<br>"
End If
End Sub
Sub Dasl_all (strFileName)
'strFileName = objSubFolder.Path
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
FILE_ALL_ACCESS = &h1f01ff
FILE_APPEND_DATA = &h000004
FILE_DELETE = &h010000
FILE_DELETE_CHILD = &h000040
FILE_EXECUTE = &h000020
FILE_READ_ATTRIBUTES = &h000080
FILE_READ_CONTROL = &h020000
FILE_READ_DATA = &h000001
FILE_READ_EA = &h000008
FILE_SYNCHRONIZE = &h100000
FILE_WRITE_ATTRIBUTES = &h000100
FILE_WRITE_DAC = &h040000
FILE_WRITE_DATA = &h000002
FILE_WRITE_EA = &h000010
FILE_WRITE_OWNER = &h080000
Set objWMIService = GetObject("winmgmts:")
Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
intControlFlags = objSD.ControlFlags
If intControlFlags AND SE_DACL_PRESENT Then
arrACEs = objSD.DACL
For Each objACE in arrACEs
'' WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
TF.Write "<br>Пользователь: <FONT COLOR=""GREEN"">"&objACE.Trustee.Domain & "\" & objACE.Trustee.Name&"</FONT><br>"
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
'' WScript.Echo vbTab & "Allowed:"
TF.Write vbTab & "Разрешенно:<br>"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
'' WScript.Echo vbTab & "Denied:"
TF.Write vbTab & "Запрещенно:<br>"
End If
If objACE.AccessMask AND FILE_ALL_ACCESS Then
TF.Write vbTab & vbTab & "Полный доступ<br>"
End If
If objACE.AccessMask AND FILE_APPEND_DATA Then
TF.Write vbTab & vbTab & "Создание папок / Дозапись новых файлов<br>"
End If
If objACE.AccessMask AND FILE_DELETE Then
TF.Write vbTab & vbTab & "Удаление<br>"
End If
If objACE.AccessMask AND FILE_DELETE_CHILD Then
TF.Write vbTab & vbTab & "Удалять вложенние<br>"
End If
If objACE.AccessMask AND FILE_EXECUTE Then
TF.Write vbTab & vbTab & "Запуск файла<br>"
End If
'' If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
'' TFm.Write vbTab & vbTab & "Чтение атрибутов<br>"
'' End If
'' If objACE.AccessMask AND FILE_READ_CONTROL Then
'' TFm.Write vbTab & vbTab & "FILE_READ_CONTROL <br>"
'' End If
If objACE.AccessMask AND FILE_READ_DATA Then
TF.Write vbTab & vbTab & "Чтение<br>"
End If
'' If objACE.AccessMask AND FILE_READ_EA Then
'' TFm.Write vbTab & vbTab & "FILE_READ_EA <br>"
'' End If
'' If objACE.AccessMask AND FILE_SYNCHRONIZE Then
'' TFm.Write vbTab & vbTab & "FILE_SYNCHRONIZE <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_ATTRIBUTES <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_DAC Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_DAC <br>"
'' End If
If objACE.AccessMask AND FILE_WRITE_DATA Then
TF.Write vbTab & vbTab & "Запись<br>"
End If
'' If objACE.AccessMask AND FILE_WRITE_EA Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_EA <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_OWNER Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_OWNER <br>"
'' End If
Next
Else
TF.Write "Не возможно получить данные<br>"
End If
End Sub
'Вывод полной версии отчета
Sub ShowSubFolders(objFolder)
Set colFolders = objFolder.SubFolders
For Each objSubFolder In colFolders
TF.Write "<br> Папка: <b>"&objSubFolder.Path&"</b><br>"
Dasl_all (objSubFolder.Path)
TF.Write "<br>"
Set colFiles = objSubFolder.Files
For Each objFile In colFiles
Next
ShowSubFolders(objSubFolder)
Next
End Sub
'Вывод краткой версии отчета
Sub mini_ShowSubFolders(objFolder)
Set colFolders = objFolder.SubFolders
For Each objSubFolder In colFolders
' WScript.Echo objSubFolder.Path
TFm.Write "<br>Папка: <b>"&objSubFolder.Path&"</b><br>"
Dasl_mini (objSubFolder.Path)
TFm.Write "<br>"
Set colFiles = objSubFolder.Files
Next
End Sub
Sub all_write (str_print)
if full = 1 then
TF.Write str_print
End if
if mini =1 then
TFm.Write str_print
End if
End Sub
'Основная функция
full = 1 'Выводит отчет полной версии
mini = 1 'Выводит краткий отчет
'^Тут явная бага.
'но как то работает. будет фичей пока ктонить ен поправит
WScript.Echo "Скрипт показа прав на папки в файло-хранилище. v.0.2 (универсальный)"
Dim folder
Set FSO = CreateObject("Scripting.FileSystemObject")
Set txtStream = fso.OpenTextFile("folder.txt")
Set FSO = CreateObject("Scripting.FileSystemObject")
Const FOR_READING = 1
fname = "folder_"&Date()&".htm"
if full = 1 then
Set TF = FSO.CreateTextFile("all_"&fname)
End if
if mini = 1 then
Set TFm = FSO.CreateTextFile("mini_"&fname)
End if
Set patch_f = fso.GetFolder(".")
all_write ("<html>")
all_write ("<head>")
if full = 1 then
TF.Write "<title>Полный Список прав на дерево директорий файлового сервера "&Date()&"</title>"
End if
if mini = 1 then
TFm.Write "<title>Краткий Список прав на дерево директорий файлового сервера "&Date()&"</title>"
End if
all_write ("</head>")
all_write ("<body>")
if full = 1 then
TF.Write "<b>Полный Cписок прав на дерево директорий файлового сервера по состоянию на "&Date()&"</b>"
End if
if mini = 1 then
TFm.Write "<b>Краткий Cписок прав на дерево директорий файлового сервера по состоянию на "&Date()&"</b>"
End if
if full = 1 then
TF.Write "<br>Краткий список можно просмотреть <a href=""file://"&patch_f&"\mini_"&fname&""">mini_"&fname&"</a>"
End if
if mini = 1 then
TFm.Write "<br>Полный список можно просмотреть <a href=""file://"&patch_f&"\all_"&fname&""">all_"&fname&"</a>"
End if
all_write ("<hr>")
Do While Not (txtStream.atEndOfStream)
str = txtStream.ReadLine
all_write ("<br><br><b>Файл сервер <a href=""file://"&str&""">"&str&"</a></b><br>")
'Получение списка
strFolder = str
Set objFolder = FSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
For Each objFile In colFiles
Next
if full = 1 then
ShowSubFolders(objFolder)
End if
if mini = 1 then
mini_ShowSubFolders(objFolder)
End if
Loop
all_write ("<hr><i>Файл сгенерирован "&Date()&" "&Time()&"</i>")
all_write ("</body>")
all_write ("</html>")
WScript.Echo "Готово. Результат находиться в файлах all_"&fname&" и mini_"&fname
Dim objShell
Set objShell = CreateObject("WScript.Shell")
if full = 1 then
objShell.Run "IEXPLORE "&patch_f&"\mini_"&fname
End if
if mini = 1 then
objShell.Run "IEXPLORE "&patch_f&"\all_"&fname
End if
WScript.Quit
Юзайте, комментируйте.
'***************************************
'* Folder v.02 (универсальный)
'* Скрипт на VBS
'* OS: Win2K server, Win2K Prof, WinXp SP1, WinXpSp2
'***************************************
' Состав поставки:
' folder.vbs - сам скрипт.
' folder.txt - файл настроек каталогов сканирования
'***************************************
' Скрипт распостраняется по принципу "Как есть". Автор скрипта не несет
' не какой отвественности, и не зачто не отвечает.
' Условия лицензирования: GPL 2.0
' При изменении любого участка скрипта следует уведомить автора, т.е. меня
' об изменениях в коде.
' Распостраннение: разрешается любое бесплатное распостранение любым способом
' с сохранением оригинального скрипта. В случае распостранения/использывания
' модификаций следует указать ссылку на оригинальный скрипт, и вкладывать
' оригинал в комплект.
' Чтото не понятно? чтото хотите поправить? нашли ошибку? пишите.
'***************************************
'* Скрипт построения дерева папок с указанного места, с указанием прав
'* доступа на каждую папку.
'* Автор: Дмитрий 'Timon_Crazy' Малыхин
'* E-mail: wct@gorodok.net
'* Blog: http://timon-crazy.livejournal.com/
'***************************************
'Процедура получения прав определенной папки, файла
'Вариант для короткой версии
'Построенно на примере от MS
Sub Dasl_mini (strFileName)
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
FILE_ALL_ACCESS = &h1f01ff
FILE_APPEND_DATA = &h000004
FILE_DELETE = &h010000
FILE_DELETE_CHILD = &h000040
FILE_EXECUTE = &h000020
FILE_READ_ATTRIBUTES = &h000080
FILE_READ_CONTROL = &h020000
FILE_READ_DATA = &h000001
FILE_READ_EA = &h000008
FILE_SYNCHRONIZE = &h100000
FILE_WRITE_ATTRIBUTES = &h000100
FILE_WRITE_DAC = &h040000
FILE_WRITE_DATA = &h000002
FILE_WRITE_EA = &h000010
FILE_WRITE_OWNER = &h080000
Set objWMIService = GetObject("winmgmts:")
Set objFileSecuritySettings = _
objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
intControlFlags = objSD.ControlFlags
if intControlFlags AND SE_DACL_PRESENT Then
arrACEs = objSD.DACL
For Each objACE in arrACEs
TFm.Write "<br>Пользователь: <FONT COLOR=""GREEN"">"&objACE.Trustee.Domain & "\" & objACE.Trustee.Name&"</FONT><br>"
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
TFm.Write vbTab & "Разрешенно:<br>"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
TFm.Write vbTab & "Запрещенно:<br>"
End If
If objACE.AccessMask AND FILE_ALL_ACCESS Then
TFm.Write vbTab & vbTab & "Полный доступ<br>"
End If
If objACE.AccessMask AND FILE_APPEND_DATA Then
TFm.Write vbTab & vbTab & "Создание папок / Дозапись новых файлов<br>"
End If
If objACE.AccessMask AND FILE_DELETE Then
TFm.Write vbTab & vbTab & "Удаление<br>"
End If
If objACE.AccessMask AND FILE_DELETE_CHILD Then
TFm.Write vbTab & vbTab & "Удалять вложенние<br>"
End If
If objACE.AccessMask AND FILE_EXECUTE Then
TFm.Write vbTab & vbTab & "Запуск файла<br>"
End If
'Если Вам нужны эти права раскоментируйте
'' If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
'' TFm.Write vbTab & vbTab & "Чтение атрибутов<br>"
'' End If
'' If objACE.AccessMask AND FILE_READ_CONTROL Then
'' TFm.Write vbTab & vbTab & "FILE_READ_CONTROL <br>"
'' End If
If objACE.AccessMask AND FILE_READ_DATA Then
TFm.Write vbTab & vbTab & "Чтение<br>"
End If
'' If objACE.AccessMask AND FILE_READ_EA Then
'' TFm.Write vbTab & vbTab & "FILE_READ_EA <br>"
'' End If
'' If objACE.AccessMask AND FILE_SYNCHRONIZE Then
'' TFm.Write vbTab & vbTab & "FILE_SYNCHRONIZE <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_ATTRIBUTES <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_DAC Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_DAC <br>"
'' End If
If objACE.AccessMask AND FILE_WRITE_DATA Then
TFm.Write vbTab & vbTab & "Запись<br>"
End If
'' If objACE.AccessMask AND FILE_WRITE_EA Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_EA <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_OWNER Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_OWNER <br>"
'' End If
Next
Else
TFm.Write "Не возможно получить данные<br>"
End If
End Sub
Sub Dasl_all (strFileName)
'strFileName = objSubFolder.Path
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
FILE_ALL_ACCESS = &h1f01ff
FILE_APPEND_DATA = &h000004
FILE_DELETE = &h010000
FILE_DELETE_CHILD = &h000040
FILE_EXECUTE = &h000020
FILE_READ_ATTRIBUTES = &h000080
FILE_READ_CONTROL = &h020000
FILE_READ_DATA = &h000001
FILE_READ_EA = &h000008
FILE_SYNCHRONIZE = &h100000
FILE_WRITE_ATTRIBUTES = &h000100
FILE_WRITE_DAC = &h040000
FILE_WRITE_DATA = &h000002
FILE_WRITE_EA = &h000010
FILE_WRITE_OWNER = &h080000
Set objWMIService = GetObject("winmgmts:")
Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
intControlFlags = objSD.ControlFlags
If intControlFlags AND SE_DACL_PRESENT Then
arrACEs = objSD.DACL
For Each objACE in arrACEs
'' WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
TF.Write "<br>Пользователь: <FONT COLOR=""GREEN"">"&objACE.Trustee.Domain & "\" & objACE.Trustee.Name&"</FONT><br>"
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
'' WScript.Echo vbTab & "Allowed:"
TF.Write vbTab & "Разрешенно:<br>"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
'' WScript.Echo vbTab & "Denied:"
TF.Write vbTab & "Запрещенно:<br>"
End If
If objACE.AccessMask AND FILE_ALL_ACCESS Then
TF.Write vbTab & vbTab & "Полный доступ<br>"
End If
If objACE.AccessMask AND FILE_APPEND_DATA Then
TF.Write vbTab & vbTab & "Создание папок / Дозапись новых файлов<br>"
End If
If objACE.AccessMask AND FILE_DELETE Then
TF.Write vbTab & vbTab & "Удаление<br>"
End If
If objACE.AccessMask AND FILE_DELETE_CHILD Then
TF.Write vbTab & vbTab & "Удалять вложенние<br>"
End If
If objACE.AccessMask AND FILE_EXECUTE Then
TF.Write vbTab & vbTab & "Запуск файла<br>"
End If
'' If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
'' TFm.Write vbTab & vbTab & "Чтение атрибутов<br>"
'' End If
'' If objACE.AccessMask AND FILE_READ_CONTROL Then
'' TFm.Write vbTab & vbTab & "FILE_READ_CONTROL <br>"
'' End If
If objACE.AccessMask AND FILE_READ_DATA Then
TF.Write vbTab & vbTab & "Чтение<br>"
End If
'' If objACE.AccessMask AND FILE_READ_EA Then
'' TFm.Write vbTab & vbTab & "FILE_READ_EA <br>"
'' End If
'' If objACE.AccessMask AND FILE_SYNCHRONIZE Then
'' TFm.Write vbTab & vbTab & "FILE_SYNCHRONIZE <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_ATTRIBUTES <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_DAC Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_DAC <br>"
'' End If
If objACE.AccessMask AND FILE_WRITE_DATA Then
TF.Write vbTab & vbTab & "Запись<br>"
End If
'' If objACE.AccessMask AND FILE_WRITE_EA Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_EA <br>"
'' End If
'' If objACE.AccessMask AND FILE_WRITE_OWNER Then
'' TFm.Write vbTab & vbTab & "FILE_WRITE_OWNER <br>"
'' End If
Next
Else
TF.Write "Не возможно получить данные<br>"
End If
End Sub
'Вывод полной версии отчета
Sub ShowSubFolders(objFolder)
Set colFolders = objFolder.SubFolders
For Each objSubFolder In colFolders
TF.Write "<br> Папка: <b>"&objSubFolder.Path&"</b><br>"
Dasl_all (objSubFolder.Path)
TF.Write "<br>"
Set colFiles = objSubFolder.Files
For Each objFile In colFiles
Next
ShowSubFolders(objSubFolder)
Next
End Sub
'Вывод краткой версии отчета
Sub mini_ShowSubFolders(objFolder)
Set colFolders = objFolder.SubFolders
For Each objSubFolder In colFolders
' WScript.Echo objSubFolder.Path
TFm.Write "<br>Папка: <b>"&objSubFolder.Path&"</b><br>"
Dasl_mini (objSubFolder.Path)
TFm.Write "<br>"
Set colFiles = objSubFolder.Files
Next
End Sub
Sub all_write (str_print)
if full = 1 then
TF.Write str_print
End if
if mini =1 then
TFm.Write str_print
End if
End Sub
'Основная функция
full = 1 'Выводит отчет полной версии
mini = 1 'Выводит краткий отчет
'^Тут явная бага.
'но как то работает. будет фичей пока ктонить ен поправит
WScript.Echo "Скрипт показа прав на папки в файло-хранилище. v.0.2 (универсальный)"
Dim folder
Set FSO = CreateObject("Scripting.FileSystemObject")
Set txtStream = fso.OpenTextFile("folder.txt")
Set FSO = CreateObject("Scripting.FileSystemObject")
Const FOR_READING = 1
fname = "folder_"&Date()&".htm"
if full = 1 then
Set TF = FSO.CreateTextFile("all_"&fname)
End if
if mini = 1 then
Set TFm = FSO.CreateTextFile("mini_"&fname)
End if
Set patch_f = fso.GetFolder(".")
all_write ("<html>")
all_write ("<head>")
if full = 1 then
TF.Write "<title>Полный Список прав на дерево директорий файлового сервера "&Date()&"</title>"
End if
if mini = 1 then
TFm.Write "<title>Краткий Список прав на дерево директорий файлового сервера "&Date()&"</title>"
End if
all_write ("</head>")
all_write ("<body>")
if full = 1 then
TF.Write "<b>Полный Cписок прав на дерево директорий файлового сервера по состоянию на "&Date()&"</b>"
End if
if mini = 1 then
TFm.Write "<b>Краткий Cписок прав на дерево директорий файлового сервера по состоянию на "&Date()&"</b>"
End if
if full = 1 then
TF.Write "<br>Краткий список можно просмотреть <a href=""file://"&patch_f&"\mini_"&fname&""">mini_"&fname&"</a>"
End if
if mini = 1 then
TFm.Write "<br>Полный список можно просмотреть <a href=""file://"&patch_f&"\all_"&fname&""">all_"&fname&"</a>"
End if
all_write ("<hr>")
Do While Not (txtStream.atEndOfStream)
str = txtStream.ReadLine
all_write ("<br><br><b>Файл сервер <a href=""file://"&str&""">"&str&"</a></b><br>")
'Получение списка
strFolder = str
Set objFolder = FSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
For Each objFile In colFiles
Next
if full = 1 then
ShowSubFolders(objFolder)
End if
if mini = 1 then
mini_ShowSubFolders(objFolder)
End if
Loop
all_write ("<hr><i>Файл сгенерирован "&Date()&" "&Time()&"</i>")
all_write ("</body>")
all_write ("</html>")
WScript.Echo "Готово. Результат находиться в файлах all_"&fname&" и mini_"&fname
Dim objShell
Set objShell = CreateObject("WScript.Shell")
if full = 1 then
objShell.Run "IEXPLORE "&patch_f&"\mini_"&fname
End if
if mini = 1 then
objShell.Run "IEXPLORE "&patch_f&"\all_"&fname
End if
WScript.Quit
Скачать с примерами можно тут - внешка


Comments
Нужен скрипт, который сможет сгенерить список выставленных прав объекта. Наследование показывать не нужно -_-.
тоесть просто права на папку?
на первый уровень папок объекта?
можно уточнить.
есть каталог. В нём подкаталоги. В них под(2)каталоги, в них под(N) каталоги.
Почти всюду права наследуются. В каких-то местах заданы явно.
Хочется скрипт, который бы писал
\base\user1
...user1 r
...user1 w
...backup r
\base\user1\public\report
...everyone r
\base\user2
...user2 r
...user2 w
...backup r
\base\common
...user1 r
...user1 w
...user2 r
...user2 w
...backup r
И т.д. Если неформально, чтобы выписывались "белые" галочки в правах (т.е. не наследуемые).
C:\
BUILTIN\Administrators Special Access [A]
NT AUTHORITY\SYSTEM Special Access [A]
BUILTIN\Users Read [RX]
NT AUTHORITY\Authenticated Users Special Access [RWXD]
C:\$RECYCLE.BIN
BUILTIN\Administrators Full Control [ALL]
NT AUTHORITY\SYSTEM Full Control [ALL]
C:\$RECYCLE.BIN\S-1-5-21-3448964143-1905
BUILTIN\Administrators Full Control [ALL]
NT AUTHORITY\SYSTEM Full Control [ALL]
P_SERIES\xantia Full Control [ALL]
C:\BOOT
NT SERVICE\TrustedInstaller Special Access [A]
NT AUTHORITY\SYSTEM Special Access [A]
BUILTIN\Administrators Special Access [A]
BUILTIN\Users Special Access [RX]
CREATOR OWNER Special Access [A]
если да, то я уже писал, можно использовать showacls из Resource Kit 2000 или 2003 сервера