Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.239.150.167] |
|
Страницы: (22) « Первая ... 7 8 [9] 10 11 ... 21 22 ( Перейти к последнему сообщению ) |
Сообщ.
#121
,
|
|
|
Привет всем, может кто может подсказать со скриптом который бы отключал учётную запись а по истечении допустим пару месяцев удалял её с AD и удалял папку с профилем с сервера??? Буду очень признателен, спасибо за раннее. А полностью не можете скриптик, а то я что то не понимаю как ко времяни привязать
Добавлено Ой простите, мне что бы удалялись учётки которые отключены уже два месяца в AD и удалялся профиль с документ сетингс вместе с аккаунтом |
Сообщ.
#122
,
|
|
|
Dmitrii Настройка безопастности NFS и настройка сетевого доступа в расшаренный ресурс не одно и тоже.
К примеру. Назначим полный доступ в папку "С:\Общая" для группы "Users". Назначим в безопасности для папки "C:\Общая" полный доступ для группы "Managers" И в итоге пользователь не входящий в группу "Users" но входящий в группу "Managers" НЕ ПОЛУЧИТ доступ к папке из сети. з.ы. Скрипт не работет. Ошибки валятся. |
Сообщ.
#123
,
|
|
|
Цитата Petrov @ Во-первых, я и не утверждал, что это ОДНО И ТО ЖЕ. Было сказано: "... мало чем отличается".Настройка безопастности NFS и настройка сетевого доступа в расшаренный ресурс не одно и тоже... Во-вторых, речь шла не о функциональности этих средств администрирования, а о процедуре настройки дескриптора безопасности. Наконец, Вы всерьёз полагаете, что берясь на написание сценариев для системного администрирования, я не имею представления о том, чем собираюсь управлять? Цитата Petrov @ Какие именно?Скрипт не работет. Ошибки валятся. "Пробежаться" по сценарию отладчиком пробовали? Если пробовали, то где именно возникает первая ошибка. |
Сообщ.
#124
,
|
|
|
Дайте ссылочку где отадчик забрать.
Плизз. |
Сообщ.
#125
,
|
|
|
Цитата Petrov @ Если у Вас есть MS Office, то Вы уже имеете хорошее средство разработки VB-сценариев - это редактор VBA.Дайте ссылочку где отадчик забрать. В тексте сценария замените все выражения WScript.Echo на MsgBox. В начало сценария добавьте выражение типа Sub Test(), а в конец - End Sub. Затем выполните импорт сценария в редактор. Если интересуют специализированные средства разработки сценариев, то рекомендую Primalscript компании Sapien, но он платный (ознакомительный период - 45 дней): http://www.primalscript.com/ Хороших бесплатных инструментов мне пока не попадалось. |
Сообщ.
#126
,
|
|
|
БЛАГОДАРЮ.
Будет время свободное, разберусь что и как. |
Сообщ.
#127
,
|
|
|
Вот тут останавливается
If objCollection.Count > 0 Then Говорит не допустимый запрос. имя папки и группы указаны верно. Папка расшарена. |
Сообщ.
#128
,
|
|
|
Цитата Petrov @ Такое выражение в сценарии встречается дважды. О котором речь?Вот тут останавливается If objCollection.Count > 0 Then Если изменяли код сценария, то выложите, пожалуйста, свой вариант. Добавлено Цитата tim01 @ Особого свойства, хранящего дату отключения "учётки", вроде бы нет. Однако, если с момента отключения никакие свойства отключенной "учётки" не изменялись, то можно воспользоваться свойством WhenChanged. Реализовать это можно как-нибудь так:Ой простите, мне что бы удалялись учётки которые отключены уже два месяца в AD и удалялся профиль с документ сетингс вместе с аккаунтом Dim objRootDSE, objGroup, objItem Dim strTemp, arrTemp Const strGroup = "здесь - имя проверяемого объекта типа ГРУППА" Const strUnit = "здесь - имя проверяемого объекта типа ПОДРАЗДЕЛЕИЕ, в котором находится группа" On Error Resume Next Set objRootDSE = GetObject("LDAP://rootDSE") If Err.Number = 0 Then Set objGroup = GetObject("LDAP://cn=" & strGroup & ",ou=" & strUnit & "," & objRootDSE.Get("defaultNamingContext")) If Err.Number = 0 Then i = 0 For Each objItem In objGroup.Members If objItem.AccountDisabled Then i = i + 1 userAnswewr = MsgBox("Учётная запись " & UCase(objItem.cn) & " отключена в течение " & _ DateDiff("m", DateValue(objItem.WhenChanged), Date) & " мес." & _ vbCr & "Удалить?", vbYesNo + vbQuestion) If userAnswewr = vbYes Then arrTemp = Split(objRootDSE.Get("defaultNamingContext"), ",") strTemp = Right(arrTemp(0), Len(arrTemp(0)) - 3) MsgBox Del_Account(objItem.cn, objItem.ProfilePath, strTemp) End If End If Next Set objGroup = Nothing If i = 0 Then MsgBox "В группе " & UCase(strGroup) & " отключенных учётных записей не обнаружено." End If Else MsgBox "Не удалось получить доступ к объекту " & UCase(strGroup) & vbCr & Err.Description Err.Clear End If Else MsgBox "Не удалось получить доступ к корню Active Directory" & vbCr & Err.Description Err.Clear End If Set objRootDSE = Nothing '=== Function Del_Account(strUser, strPath, strDomain) Dim objComputer, strReport, objFS Const strDomController = "здесь - DNS-имя контроллера домена" On Error Resume Next Set objFS = CreateObject("Scripting.FileSystemObject") If objFS.FolderExists(strPath) Then objFS.DeleteFolder strPath, True If Err.Number = 0 Then strReport = "Папка профиля удалена." Else strReport = "Папка профиля не удалена." & vbCr & Err.Description Err.Clear End If Else strReport = "Папка профиля не обнаружена." End If Set objFS = Nothing Set objComputer = GetObject("WinNT://" & strDomain & "/" & strDomController) If Err.Number = 0 Then Call objComputer.Delete("user", strUser) If Err.Number = 0 Then strReport = strReport & vbCr & vbCr & "Учётная запись удалена." Else strReport = strReport & vbCr & vbCr & "Учётная запись не удалена." & vbCr & Err.Description Err.Clear End If Else strReport = strReport & vbCr & vbCr & "Cвязь с контроллером домена не установлена." & vbCr & Err.Description End If Set objComputer = Nothing Del_Account = strReport End Function |
Сообщ.
#129
,
|
|
|
Привет! может кто-нибудь подсказать со скриптом, который определял бы количество на печатанных пользователями страниц в месяц. Результатом выполнения задачи является информация о количестве страниц напечатанных каждым пользователем. Спасибо заранее.
|
Сообщ.
#130
,
|
|
|
Подскажите скрипт для резолвинга IP адресов. Очень нужно.
|
Сообщ.
#131
,
|
|
|
Туплю..ууу- не могу! На удаленном компе есть расшарен.папка А,в ней обычная папка В .Как снять наследование у папки В от папки А скриптом? Заранее признателен!(Третий день уже сижу...)
Это сообщение было перенесено сюда или объединено из темы "Как отключить наследование у вложенной папки на удаленном PC" |
Сообщ.
#132
,
|
|
|
Цитата katerinka @ Вообще-то такую задачу лучше решать, исходя из конкретной ситуации в Вашей сети. Пока могу предложить сценарий для самого простого случая:может кто-нибудь подсказать со скриптом, который определял бы количество на печатанных пользователями страниц в месяц. Результатом выполнения задачи является информация о количестве страниц напечатанных каждым пользователем - к некоей сетевой станции подключен принтер общего доступа; - пользователь, запускающий сценарий, имеет права администратора на этой станции; - для сбора указанных сведений анализируется журнал системных событий этой станции; - период очистки журнала совпадает с периодом сбора сведений, причём очистка выполняется только после выполнения рассматриваемой задачи. Dim objWMI, objCollection, objItem, lngNumEvents Dim strMsg, intPosL, intPosR, strOwner, intPages Dim dtmEventDate, dtmFirstDate, dtmLastDate Dim objDict, objFS, objFile Const strComputer = "здесь - DNS-имя станции, журнал которой анализируется" Const strResFile = "C:\Temp\Results.txt" dtmFirstDate = DateValue("01.02.2008") dtmLastDate = DateValue("29.02.2008") Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objCollection = objWMI.ExecQuery("SELECT * FROM Win32_NTLogEvent WHERE Logfile='System' " & _ "AND EventType=3 AND SourceName='Print' AND EventCode=10") lngNumEvents = objCollection.Count If lngNumEvents > 0 Then Wscript.Echo "Найдено событий указанного вида: " & lngNumEvents Set objDict = CreateObject("Scripting.Dictionary") objDict.CompareMode = 1 For Each objItem In objCollection dtmEventDate = Date_Convert(CStr(objItem.TimeWritten)) If dtmFirstDate <= dtmEventDate And dtmEventDate <= dtmLastDate Then strMsg = objItem.Message intPosL = InStr(1, strMsg, "владельца", vbTextCompare) intPosR = InStr(1, strMsg, "напечатан", vbTextCompare) strOwner = Mid(strMsg, intPosL + 10, intPosR - intPosL - 11) intPosL = InStrRev(strMsg, ":") intPages = CInt(Mid(strMsg, intPosL + 2)) If objDict.Exists(strOwner) Then objDict.Item(strOwner) = objDict.Item(strOwner) + intPages Else objDict.Add strOwner, intPages End If End If Next Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.CreateTextFile(strResFile, True) For Each objItem In objDict.Keys objFile.WriteLine (objItem & " = " & objDict.Item(objItem)) Next objFile.Close Set objFile = Nothing objDict.RemoveAll Set objDict = Nothing Wscript.Echo "Готово." Else Wscript.Echo "Событий указанного вида в журнале не обнаружено." End If Set objCollection = Nothing Set objWMI = Nothing '=== Function Date_Convert(strDTM) Date_Convert = DateValue(Mid(strDTM, 7, 2) & "." & Mid(strDTM, 5, 2) & "." & Mid(strDTM, 1, 4)) End Function Если Ваш случай сложнее, то опишите, пожалуйста, исходные условия задачи. Цитата ^D^ima Ваша задача сформулирована слишком лаконично. Подскажите скрипт для резолвинга IP адресов |
Сообщ.
#133
,
|
|
|
Цитата leftfield @ Попробуйте так:На удаленном компе есть расшарен.папка А,в ней обычная папка В .Как снять наследование у папки В от папки А скриптом? Dim objWMI, objSecSettings, objSD, objFS, intResult Const SE_DACL_PROTECTED = 4096 Const strPath = "здесь - путь к целевой папке в обычном формате" Const strPathWMI = "здесь - путь к целевой папке в формате для WMI, т.е. с удвоенным кол-вом символов '\'" Set objFS = CreateObject("Scripting.FileSystemObject") If objFS.FolderExists(strPath) Then Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2") Set objSecSettings = objWMI.Get("Win32_LogicalFileSecuritySetting.Path='" & strPathWMI & "'") If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then If CBool(objSD.ControlFlags And SE_DACL_PROTECTED) Then intResult = -1 Else objSD.ControlFlags = objSD.ControlFlags + SE_DACL_PROTECTED intResult = objSecSettings.SetSecurityDescriptor(objSD) End If Select Case intResult Case -1: WScript.Echo "Наследование уже отключено." Case 0: WScript.Echo "Успешное завершение." Case 2: WScript.Echo "Отсутствует доступ к необходимой информации." Case 9: WScript.Echo "Для выполнения операции нет достаточных прав." Case 21: WScript.Echo "Заданы недопустимые значения параметров." Case Else: WScript.Echo "Неизвестная ошибка." End Select Else WScript.Echo "Не удалось прочитать дескриптор безопасности объекта." End If Set objSD = Nothing Set objSecSettings = Nothing Set objWMI = Nothing Else WScript.Echo "Указанный объект не обнаружен." End If |
Сообщ.
#134
,
|
|
|
Цитата Dmitrii @ Ваша задача сформулирована слишком лаконично. Имеется список IP адресов(например в текстовом файле), необходимо их разрешить до DNS имени. Что не понятно? |
Сообщ.
#135
,
|
|
|
[QUOTE=Dmitrii,1202199554,1857889][quote=andrew307,1201606583,1850781]... как получить в домене Win2003 имя компьютера его IP адрес имя активной учетной записи под которой залогинен пользователь и все это вывести в текстовый файл...[/quote]Вот один из возможных вариантов:
Dim objShell, objExec, objOutStream, objWSNet Dim strTemp, strUser, strThisComputer, strIP Dim arrNames, intLBracket, intRBracket Dim objFS, objFile, strList Const strFileSpec = "C:\Temp\my_list.txt" Set objWSNet = CreateObject("WScript.Network") strThisComputer = objWSNet.ComputerName Set objWSNet = Nothing Call Comuters_List(arrNames) Set objShell = CreateObject("WScript.Shell") Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.CreateTextFile(strFileSpec, True) For i = UBound(arrNames) - 1 To 0 Step -1 If StrComp(strThisComputer, arrNames(i), vbTextCompare) <> 0 Then Set objExec = objShell.Exec("ping -n 1 -w 300 " & arrNames(i)) Set objOutStream = objExec.StdOut strTemp = vbNullString While Not objOutStream.AtEndOfStream strTemp = strTemp & Trim(objOutStream.ReadLine()) Wend intLBracket = InStr(1, strTemp, "[") If intLBracket > 0 Then intRBracket = InStr(1, strTemp, "]") strIP = Mid(strTemp, intLBracket + 1, intRBracket - intLBracket - 1) If InStr(1, strTemp, "TTL", vbTextCompare) > 0 Then strUser = Logged_User(arrNames(i)) If Not IsNull(strUser) Then strList = strList & arrNames(i) & " = " & strIP & " : " & UCase(strUser) & vbNewLine Else strList = strList & arrNames(i) & " = " & strIP & " : пусто" & vbNewLine End If Else strList = strList & arrNames(i) & " = " & strIP & " : не отвечает" & vbNewLine End If End If End If WScript.Echo arrNames(i) Next objFile.Write strList objFile.Close Set objOutStream = Nothing Set objExec = Nothing Set objFile = Nothing Set objFS = Nothing Set objShell = Nothing WScript.Echo "Готово." '======= Function Comuters_List(arrTemp) Dim objAD, objComputer, strTemp, strList Const strDomane = "здесь - DNS-имя домена" Const strGroup = "Компьютеры домена" Set objAD = GetObject("WinNT://" & strDomane & "/" & strGroup & ",group") For Each objItem In objAD.Members If Not objItem.AccountDisabled Then strTemp = objItem.Name strList = strList & Left(strTemp, Len(strTemp) - 1) & vbNewLine End If Next Set objAD = Nothing arrTemp = Split(strList, vbNewLine) Call Sorting_Array(arrTemp) End Function '======= Function Logged_User(strComputer) Dim objWMI, objCollection, objItem, strTemp Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objCollection = objWMI.ExecQuery("SELECT UserName FROM Win32_ComputerSystem") For Each objItem In objCollection strTemp = objItem.UserName If Not IsNull(strTemp) Then strTemp = Mid(strTemp, InstrRev(strTemp, "\") + 1) End If Next Set objCollection = Nothing Set objWMI = Nothing Logged_User = strTemp End Function '======= Function Sorting_Array(arrTemp) Dim blnStopSort, intNumChange, strTemp blnStopSort = False i = 1 Do intNumChange = 0 For j = 0 To UBound(arrTemp) - 1 If arrTemp(j) < arrTemp(j + 1) Then strTemp = arrTemp(j) arrTemp(j) = arrTemp(j + 1) arrTemp(j + 1) = strTemp intNumChange = intNumChange + 1 End If Next If intNumChange = 0 Then blnStopSort = True Else If i < UBound(arrTemp) Then i = i + 1 Else blnStopSort = True End If End If Loop While Not blnStopSort End Function Добрый день Какие службы на удаленном компьютере должны быть запущены чтобы функция 'GetObject("winmgmts:".......' работала? В Вашем скрипте. А то некоторые компы дают инфу по пользователю, некоторые вываливаются с ошибкой "Компьютер удаленного сервера не существует или недоступен.GetObject. Код 800А01СE" Причем комп пингуется! Компьютеры в домене Win200 SP4 WinXP SP2 |