Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.239.150.167] |
|
Страницы: (22) « Первая ... 6 7 [8] 9 10 ... 21 22 ( Перейти к последнему сообщению ) |
Сообщ.
#106
,
|
|
|
Определение имени диска, на котором расположен файл запущенного сценария:
WScript.Echo Left(WScript.ScriptFullName, 1) Определение DNS-имени компьютера, на котором запущен сценарий: Set objWsNet = CreateObject("WScript.Network") WScript.Echo objWsNet.ComputerName Set objWsNet = Nothing |
Сообщ.
#107
,
|
||||||||||
|
Ребята, помогите, как получить в домене Win2003 имя компьютера его IP адрес имя активной учетной записи под которой залогинен пользователь и все это вывести в текстовый файл приверно в таком виде:
|
Сообщ.
#108
,
|
|
|
Доброго времени суток.
Помогите скриптиком раздающим права доступа к расшаренной папке. |
Сообщ.
#109
,
|
|
|
Подмогните скриптом
надо прописать пользователям домена альтнрнативный DNS доп. шлюз |
Сообщ.
#110
,
|
|
|
Цитата andrew307 @ Вот один из возможных вариантов:... как получить в домене Win2003 имя компьютера его IP адрес имя активной учетной записи под которой залогинен пользователь и все это вывести в текстовый файл... 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 Computers_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 Computers_List(arrTemp) Dim objAD, objItem, strTemp, strList Dim strDomain, objWSNet Const strGroup = "Компьютеры домена" Set objWSNet = CreateObject("WScript.Network") strDomain = objWSNet.UserDomain Set objWSNet = Nothing Set objAD = GetObject("WinNT://" & strDomain & "/" & 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) ReDim Preserve arrTemp(UBound(arrTemp) - 1) 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 Добавлено Цитата avsen @ Вгляните для начала на сообщения #3 и #11 в данной теме. Подмогните скриптом надо прописать пользователям домена альтнрнативный DNS доп. шлюз |
Сообщ.
#111
,
|
|
|
Цитата Dmitrii @ Вгляните для начала на сообщения #3 и #11 в данной теме. Извините, но мне надо альтернативный DNS, т.е. должно быть основной и альтернативный у меня нет DHCP - все ip статические |
Сообщ.
#112
,
|
|
|
Цитата avsen @ Сценарий Change_IP_mask_DNS_Gate_by_MAC.vbs, который предложил AlexJ, легко переделывается под Ваши нужды.... мне надо альтернативный DNS, т.е. должно быть основной и альтернативный... В самом простом случае (когда известен список DNS-имён станций, на каждой из них стоит только один сетевой адаптер, все станции доступны) сценарий может выглядеть так: Dim objWMI, objCollection, objItem, intRes Dim arrComputers, arrDNSServer, arrGateway, arrGatewaymetric arrComputers = Array("station1", "station2", "station3") For i = 0 To UBound(arrComputers) Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & arrComputers(i) & "\root\cimv2") Set objCollection = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration") arrDNSServer = Array("192.168.1.1", "192.168.1.2") arrGateway = Array("192.168.1.3", "192.168.1.4") arrGatewaymetric = Array(1, 3) For Each objItem In objCollection intRes = objItem.SetDNSServerSearchOrder(arrDNSServer) Select Case intRes Case 0 MsgBox "Список DNS-серверов настроен.", vbInformation, arrComputers(i) Case 1 MsgBox "Список DNS-серверов настроен. Требуется перезагрузка станции", vbInformation, arrComputers(i) Case Else MsgBox "При настройке списка DNS-серверов возникла ошибка " & intRes, vbCritical, arrComputers(i) End Select intRes = objItem.SetGateways(arrGateway, arrGatewaymetric) Select Case intRes Case 0 MsgBox "Список шлюзов настроен.", vbInformation, arrComputers(i) Case 1 MsgBox "Список шлюзов настроен. Требуется перезагрузка станции", vbInformation, arrComputers(i) Case Else MsgBox "При настройке списка шлюзов возникла ошибка " & intRes, vbCritical, arrComputers(i) End Select Next Next MsgBox "Готово", vbInformation Учтите, что методы SetDNSServerSearchOrder и SetGateways не добавляют новые настройки к уже имеющимся, а заменяют старые на новые. |
Сообщ.
#113
,
|
|
|
Цитата AlexLine @ Скрипт меняющий пароль локального админа на всех компьютерах домена: этот скрипт нужно засунуть в стартап скрипты в ГП для компа, предварительно ессесено сздать саму ГП и применить ее для всех компьютеров домена. а может кто подскажет, что нужно добавить чтобы не пихать этот скрипт на каждую локальную машину, а прицепить его на конктретную группу в АД. И чтобы он применялся, если пользователь из этой группы логинится на любой машине в домене? Надеюсь не очень запутанно написал... Заранее спасибо:) |
Сообщ.
#114
,
|
|
|
ANdrewZ, в групповой политике нужного подразделения настройте политику Конфигурация пользователя - Конфигурация Windows - Сценарии.
|
Сообщ.
#115
,
|
|
|
да, я все так и делаю
но про загрузке вот такая ошибка вываливается там где line, стоит цифра 3 |
Сообщ.
#116
,
|
|
|
все, понял где была моя ошибка, я все таки не туда скрипт цеплял. Спасибо за помощь!
|
Сообщ.
#117
,
|
|
|
Цитата Petrov @ Если ещё актуально, то укажите тип сети (доменная или одноранговая). Помогите скриптиком раздающим права доступа к расшаренной папке. |
Сообщ.
#118
,
|
|
|
Домен, Dmitrii.
Нужно назначить разрешения на ДОСТУП к расшаренной папке (не перепутайте с безопастностью). |
Сообщ.
#119
,
|
|
|
Привет всем, может кто может подсказать со скриптом который бы отключал учётную запись а по истечении допустим пару месяцев удалял её с AD и удалял папку с профилем с сервера??? Буду очень признателен, спасибо за раннее
|
Сообщ.
#120
,
|
|
|
Цитата Petrov @ Не перепутал. Кстати, настройка безопасности NTFS (для объекта файловой системы) мало чем отличается от настройки разрешений на сетевой доступ.Нужно назначить разрешения на ДОСТУП к расшаренной папке (не перепутайте с безопастностью). '************************************************************* '* Имя: Share_Add_ACE.vbs * '* Язык: VBScript * '* Назначение: Добавление разрешений на доступ к общей папке * '************************************************************* Dim objWMI, objSecSettings, objSD, objItem, objWSNet Dim arrACE(), blnUserFound Dim objCollection, objSID, objTrustee, objNewACE Dim strComputer, strUser, strDomain, strUserSID Const FULL_ACCESS = 2032127 Const READ_AND_MODIFY = 1245631 Const READ_ONLY = 1179817 Const ACCESS_ALLOWED = 0 Const ACCESS_DENIED = 1 Const strShareName = "Total_Folder" Set objWSNet = CreateObject("WScript.Network") strComputer = objWSNet.ComputerName strDomain = objWSNet.UserDomain Set objWSNet = Nothing strUser = "здесь - имя "учётки" пользователя" Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\CIMV2") Set objCollection = objWMI.ExecQuery("SELECT * FROM Win32_LogicalShareSecuritySetting WHERE Name='" & strShareName & "'") If objCollection.Count > 0 Then Set objCollection = objWMI.ExecQuery("SELECT SID FROM Win32_Account WHERE Name='" & strUser & "' AND Domain='" & strDomain & "'") If objCollection.Count > 0 Then For Each objItem In objCollection strUserSID = objItem.SID Next Set objCollection = Nothing Set objSecSettings = objWMI.Get("Win32_LogicalShareSecuritySetting.Name='" & strShareName & "'") If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then If Not IsNull(objSD.DACL) Then ReDim arrACE(UBound(objSD.DACL)) i = 0 For Each objItem In objSD.DACL If objItem.Trustee.SIDString = strUserSID Then objItem.AccessMask = READ_ONLY blnUserFound = True Exit For Else Set arrACE(i) = objItem i = i + 1 End If Next If Not blnUserFound Then Set objSID = objWMI.Get("Win32_SID.SID='" & strUserSID & "'") Set objTrustee = objWMI.Get("Win32_Trustee").Spawninstance_() objTrustee.Domain = strDomain objTrustee.Name = strUser objTrustee.SID = objSID.BinaryRepresentation objTrustee.SidLength = objSID.SidLength objTrustee.SIDString = strUserSID Set objSID = Nothing Set objNewACE = objWMI.Get("Win32_Ace").Spawninstance_() objNewACE.AccessMask = READ_ONLY objNewACE.AceType = ACCESS_ALLOWED objNewACE.Trustee = objTrustee Set objTrustee = Nothing i = UBound(arrACE) + 1 ReDim Preserve arrACE(i) Set arrACE(i) = objNewACE objSD.DACL = arrACE Set objNewACE = Nothing Erase arrACE End If intResult = objSecSettings.SetSecurityDescriptor(objSD) Select Case intResult Case 0: WScript.Echo "Успешное завершение." Case 2: WScript.Echo "Отсутствует доступ к необходимой информации." Case 8: WScript.Echo "Неизвестная ошибка." Case 9: WScript.Echo "Для выполнения операции нет достаточных прав." Case 21: WScript.Echo "Заданы недопустимые значения параметров." End Select Else WScript.Echo "Дескриптор безопасности объекта не содержит ни одной записи DACL." End If Else WScript.Echo "Не удалось прочитать дескриптор безопасности объекта." End If Else WScript.Echo "Не обнаружена учётная запись пользователя " & UCase(strUser) End If Else WScript.Echo "Не обнаружен общий ресурс с именем " & UCase(strShareName) End If Set objSD = Nothing Set objSecSettings = Nothing Set objWMI = Nothing '*********************************************************** '* Имя: Share_Remove_ACE.vbs * '* Язык: VBScript * '* Назначение: Удаление разрешений на доступ к общей папке * '*********************************************************** Dim objWMI, objSecSettings, objSD, objItem, objWSNet, objCollection Dim arrACE(), blnUserFound Dim strComputer, strUser, strDomain, strUserSID Const strShareName = "Total_Folder" Set objWSNet = CreateObject("WScript.Network") strComputer = objWSNet.ComputerName strDomain = objWSNet.UserDomain Set objWSNet = Nothing strUser = "здесь - имя "учётки" пользователя" Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\CIMV2") Set objCollection = objWMI.ExecQuery("SELECT * FROM Win32_LogicalShareSecuritySetting WHERE Name='" & strShareName & "'") If objCollection.Count > 0 Then Set objCollection = objWMI.ExecQuery("SELECT SID FROM Win32_Account WHERE Name='" & strUser & "' AND Domain='" & strDomain & "'") If objCollection.Count > 0 Then For Each objItem In objCollection strUserSID = objItem.SID Next Set objCollection = Nothing Set objSecSettings = objWMI.Get("Win32_LogicalShareSecuritySetting.Name='" & strShareName & "'") If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then If Not IsNull(objSD.DACL) Then ReDim arrACE(UBound(objSD.DACL)) i = 0 For Each objItem In objSD.DACL If StrComp(objItem.Trustee.SIDString, strUserSID, vbTextCompare) <> 0 Then Set arrACE(i) = objItem i = i + 1 Else blnUserFound = True End If Next If blnUserFound Then i = UBound(arrACE) - 1 ReDim Preserve arrACE(i) objSD.DACL = arrACE Erase arrACE End If intResult = objSecSettings.SetSecurityDescriptor(objSD) Select Case intResult Case 0: WScript.Echo "Успешное завершение." Case 2: WScript.Echo "Отсутствует доступ к необходимой информации." Case 8: WScript.Echo "Неизвестная ошибка." Case 9: WScript.Echo "Для выполнения операции нет достаточных прав." Case 21: WScript.Echo "Заданы недопустимые значения параметров." End Select Else WScript.Echo "Дескриптор безопасности объекта не содержит ни одной записи DACL." End If Else WScript.Echo "Не удалось прочитать дескриптор безопасности объекта." End If Else WScript.Echo "Не обнаружена учётная запись пользователя " & UCase(strUser) End If Else WScript.Echo "Не обнаружен общий ресурс с именем " & UCase(strShareName) End If Set objSD = Nothing Set objSecSettings = Nothing Set objWMI = Nothing Примечания: 1. Предполагается, что сценарии будут запускаться на той же станции, где расположен управляемый ресурс. 2. Работоспособность сценариев проверена на Windows 2000 Pro/XP Pro/2003. 3. В принципе, для решения задачи можно воспользоваться не WMI, а ADSI. Добавлено Цитата tim01 @ Смотрите сообщение #5 данной темы.... со скриптом который бы отключал учётную запись... Цитата tim01 @ Один из вариантов:... удалял её с AD... Dim objContainer, strUser, strPath On Error Resume Next strUser = "Кладовщик" strPath = "LDAP://ou=Пользователи,ou=Склад,dc=domain_name,dc=ru" Set objContainer = GetObject(strPath) If Err.Number = 0 Then Call objContainer.Delete("user", "cn=" & strUser) If Err.Number = 0 Then WScript.Echo "Готово" Else WScript.Echo Err.Number & vbCr & Err.Description Err.Clear End If Else WScript.Echo Err.Number & vbCr & Err.Description Err.Clear End If Set objContainer = Nothing |