Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.173.48.18] |
|
Страницы: (22) « Первая ... 13 14 [15] 16 17 ... 21 22 ( Перейти к последнему сообщению ) |
Сообщ.
#211
,
|
|
|
Цитата illus @ В таком варианте сценария имя домена определяется автоматически. Вот этот фрагмент:я так понимаю что бы скрипт законектился к домену необходимо прописать имя домена в strDomain?.. Set objWSNet = CreateObject("WScript.Network") strDomain = objWSNet.UserDomain У меня сценарий прекрасно работает. Если ошибка возникает при использовании именно такого варианта сценария, то попробуйте выражение Set objAD = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group") заменить на Set objAD = GetObject("WinNT://" & strDomain & "/" & strPDC & "/" & strGroup & ",group") Здесь strPDC - это DNS-имя основного контроллера домена. |
Сообщ.
#212
,
|
|
|
Народ помогите написать скрипт.
Нужно отсканировать все компы в домене на наличие документов (doc/xls/ и т.д.). Нужно что бы выдавался список содержащий компы и список документов на них |
Сообщ.
#213
,
|
|
|
Цитата Dark-Dragon @ Сценарий для решения такой задачи и не самый быстрый, и не самый удобный инструмент.Нужно отсканировать все компы в домене на наличие документов (doc/xls/ и т.д.). Нужно что бы выдавался список содержащий компы и список документов на них Но если сильно надо, то вот одна из возможных реализаций (на VBS): On Error Resume Next Dim objWMI, objCollection, objItem, objWSNet, objFS, objFile Dim arrComputers, arrDrives Dim strSource, lngFiles, blnErrFlag, i, j Const strResFile = "C:\ListObjects.txt" Call Comuters_List(arrComputers) Set objWSNet = CreateObject("WScript.Network") Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.OpenTextFile(strResFile, 2, True) For i = 0 To UBound(arrComputers) If Available(arrComputers(i)) Then Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & arrComputers(i) & "\root\cimv2") Set objCollection = objWMI.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3") ReDim arrDrives(objCollection.Count - 1) j = 0 For Each objItem In objCollection arrDrives(j) = objItem.DeviceID j = j + 1 Next WScript.Echo arrComputers(i) & vbNewLine & "-----" objFile.WriteLine arrComputers(i) For j = 0 To UBound(arrDrives) strSource = Free_Letter lngFiles = 0 If Len(strSource) > 0 Then strSource = strSource & ":" objWSNet.MapNetworkDrive strSource, "\\" & arrComputers(i) & "\" & Left(arrDrives(j), 1) & "$" WScript.Echo "Просмотрено файлов на диске " & arrDrives(j) Call View_Folder(strSource & "\", arrDrives(j)) objWSNet.RemoveNetworkDrive strSource, True WScript.Echo Else WScript.Echo "Нет свободных имён для назначения сетевому тому. Продолжение работы невозможно." blnErrFlag = True Exit For End If Next Erase arrDrives WScript.Echo "=====" Else objFile.WriteLine arrComputers(i) & " не отвечает." End If If blnErrFlag Then Exit For Next Erase arrComputers If Not objFile Is Nothing Then objFile.Close Set objFile = Nothing End If Set objFS = Nothing Set objWSNet = Nothing Set objCollection = Nothing Set objWMI = Nothing WScript.Echo "Готово." WScript.Quit 0 '=== Function Comuters_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 Sorting_Array(arrTemp) Dim blnStopSort, intNumChange, strTemp, i, j 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 '=== Function Available(strComputer) Dim objShell, objExec, objOutStream Dim strResPing, intResFind Set objShell = CreateObject("WScript.Shell") Set objExec = objShell.Exec("ping -n 1 -w 300 " & strComputer) Set objOutStream = objExec.StdOut strResPing = vbNullString While Not objOutStream.AtEndOfStream strResPing = strResPing & Trim(objOutStream.ReadLine()) Wend If InStr(1, strResPing, "TTL", vbTextCompare) > 1 Then Available = True Else Available = False End If Set objOutStream = Nothing Set objExec = Nothing Set objShell = Nothing End Function '=== Function View_Folder(strSource, strDrive) Dim objDir, objItem Set objDir = objFS.GetFolder(strSource) Call Enum_Files(strSource, strDrive) For Each objItem In objDir.SubFolders Call View_Folder(strSource & "\" & objItem.Name, strDrive) Next Set objDir = Nothing End Function '=== Function Enum_Files(strSource, strDrive) Dim objDir, objItem, strTemp Set objDir = objFS.GetFolder(strSource) For Each objItem In objDir.Files If Err.Number <> 0 Then Err.Clear Else strTemp = UCase(objFS.GetExtensionName(objItem.Name)) If strTemp = "DOC" Or strTemp = "XLS" Then objFile.WriteLine strDrive & "\" & Mid(objItem.Path, 4) End If End If lngFiles = lngFiles + 1 WScript.StdOut.Write lngFiles & Chr(13) Next Set objItem = Nothing Set objDir = Nothing End Function '=== Function Free_Letter() Dim objWMIServ, objDrives, objDrive Dim arrTemp(25), i Set objWMIServ = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set objDrives = objWMIServ.ExecQuery("SELECT DeviceID FROM Win32_LogicalDisk") For Each objDrive In objDrives arrTemp(Asc(UCase(objDrive.DeviceID)) - 65) = True Next Set objDrive = Nothing Set objDrives = Nothing Set objWMIServ = Nothing For i = 3 To 25 If Not arrTemp(i) Then Exit For Next If i < 26 Then Free_Letter = Chr(i + 65) Else Free_Letter = vbNullString End If Erase arrTemp End Function Примечания: 1. Сценарий предназначен для работы в консольном режиме. 2. Проверок для "отлова" возможных ошибок работы сценария здесь самый минимум. Так что, если захотите возиться с этой "портянкой", то все прочие проверки Вам придётся добавлять самостоятельно. |
Сообщ.
#214
,
|
|
|
Всем привет!
Помогите найти скрипт, нужно выгрузить из AD пользователей с Display name, account, e-mail в файл excel или notepad. Нигде не могу найти... |
Сообщ.
#215
,
|
|
|
grusiner, а экспортом не пробовал воспользоваться?
|
Сообщ.
#216
,
|
|
|
Экспорт e-mail адреса не экспортирует.
|
Сообщ.
#217
,
|
|
|
Цитата grusiner @ Так, например:... нужно выгрузить из AD пользователей с Display name, account, e-mail в файл excel или notepad... Dim objRoot, objConnection, objCommand, objRSet Dim objFS, objFile Dim strDomain, strAttributes, intNumFields Const strResFile = "C:\Users.txt" Set objRoot = GetObject("LDAP://RootDSE") strDomain = objRoot.Get("DefaultNamingContext") Set objRoot = Nothing strAttributes = "DisplayName,UserPrincipalName,SamAccountName,Mail" Set objConnection = CreateObject("ADODB.Connection") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand = CreateObject("ADODB.Command") Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Timeout") = 30 objCommand.Properties("Sort On") = "DisplayName" Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.CreateTextFile(strResFile, True) objCommand.CommandText = "<LDAP://" & strDomain & ">;(&(objectCategory=Person)(objectClass=User));" _ & strAttributes & ";Subtree" Set objRSet = objCommand.Execute If objRSet.RecordCount > 0 Then objRSet.MoveFirst intNumFields = objRSet.Fields.Count Do Until objRSet.EOF If Len(objRSet.Fields("UserPrincipalName").Value) > 0 Then For i = 0 To intNumFields - 2 objFile.Write(objRSet.Fields(i).Value & vbTab) Next objFile.Write(objRSet.Fields(intNumFields - 1).Value & vbNewLine) End If objRSet.MoveNext Loop End If objFile.Close Set objFile = Nothing Set objFS = Nothing Set objRSet = Nothing Set objCommand = Nothing Set objConnection = Nothing WScript.Echo "Готово." WScript.Quit 0 |
Сообщ.
#218
,
|
|
|
Здравствуйте!
Помогите пожалуйста со скриптом. У нас домен, есть принт сервер. Периодически приезжают в контору люди из других организаций и им нужно печатать документы. Но на сервер они зайти не могут без Login и Password. И как следствие не могут получить доступ к принтеру. Раньше у нас был батничек с Net Usе'ом, в котором был прописан пароль и пользователь для печати. Но теперь этот батник не работает. Попробовал использовать VBS с AddWindowsPrinterConnection, но у этой функции нет возможности передачи логина (и соответственно получаю сообщение об ошибке при доступе к принтеру). AddPrinterConnection требует порт, - это тоже не подходит. Нет ли возможности использовать что-то вроде этого? On Error Resume Next Set WshNetwork = WScript.CreateObject("WScript.Network") wshNetwork.AddWindowsPrinterConnection "\\Server\Printer", User, Pass wshNetwork.SetDefaultPrinter "\\Server\Printer" Заранее спасибо. |
Сообщ.
#219
,
|
|
|
Dmitrii
Спасибо за скрипт!!! |
Сообщ.
#220
,
|
|
|
Подскажите скрипт изменения настроек энергосбережения.
Добавлено Что-то много винда в реестре правит CreateKey HKCU\Control Panel\PowerCfg\GlobalPowerPolicy (null) Key: 0xE13EAB98 CreateKey HKLM\Software\Microsoft\Windows\CurrentVersion\Controls Folder\PowerCfg\GlobalPowerPolicy (null) Key: 0xE5AB5EA0 CreateKey HKLM\Software\Microsoft\Windows\CurrentVersion\Controls Folder\PowerCfg\ProcessorPolicies\3 (null) Key: 0xE13EAB98 CreateKey HKCU\Control Panel\PowerCfg\PowerPolicies\3 (null) Key: 0xE5AB84F8 CreateKey HKLM\Software\Microsoft\Windows\CurrentVersion\Controls Folder\PowerCfg\PowerPolicies\3 (null) Key: 0xE5C63C88 CreateKey HKCU\Control Panel\PowerCfg\GlobalPowerPolicy (null) Key: 0xE5FD4828 CreateKey HKLM\Software\Microsoft\Windows\CurrentVersion\Controls Folder\PowerCfg\GlobalPowerPolicy (null) Key: 0xE13EAB98 CreateKey HKLM\SYSTEM\CURRENTCONTROLSET\Control\Session Manager\Power (null) Key: 0xE5FD4828 CreateKey HKCU\Control Panel\PowerCfg (null) Key: 0xE13EAB98 Добавлено Но судя по тому, что параметры спячки экрана нразные под разныи пользователями, то нас интересует только ветки HKCU\Control Panel\PowerCfg\ |
Сообщ.
#221
,
|
|
|
Цитата ^D^ima @ Подскажите скрипт изменения настроек энергосбережения. http://technet.microsoft.com/ru-ru/library/cc748940.aspx надеюсь, построить строку запуска сможешь? |
Сообщ.
#222
,
|
|
|
попробуем. cpl c правами админа не меняла у пользователей
|
Сообщ.
#223
,
|
|
|
Стоит небольшая задача
Например у человека в настройках сетевого подключения прописан ip адрес 10.2.5.1, маска подсети 255.128.0.0, основной шлюз 10.0.0.100, днс сервер 10.0.0.100. А мне необходимо сменить у человека маску подсети на 255.255.0.0 и шлюз на 10.2.0.100, а остальные настройки оставить без изменений. И причем скрипт у меня должен содержать обработку по ip адресам, то есть если у человека первые две цифры ip адреса 10.2, то шлюз у него должен измениться на 10.2.0.100, а если ip адрес начинается 10.3, то шлюз у него должен измениться на 10.3.0.100, а маска посдети 255.255.0.0 и днс 10.0.0.100 Скрипт смены настроек сетевого подключения нашел на вашем форуме Полезные скрипты но в программировании vbs скриптов не силен, прошу помощи |
Сообщ.
#224
,
|
|
|
Здравствуйте. Помогите жалуйста найти ошибку. Скрипты ругаются и не работают.
Вот например. Скрипт сгенерированный WMI Code Creator strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") ' Obtain an instance of the the class ' using a key property value. Set objShare = objWMIService.Get("Win32_TerminalServiceSetting.ReplaceKeyProperty=ReplacePropertyValue") ' Obtain an InParameters object specific ' to the method. Set objInParam = objShare.Methods_("SetAllowTSConnections"). _ inParameters.SpawnInstance_() ' Add the input parameters. objInParam.Properties_.Item("AllowTSConnections") = 1 ' Execute the method and obtain the return status. ' The OutParameters object in objOutParams ' is created by the provider. Set objOutParams = objWMIService.ExecMethod("Win32_TerminalServiceSetting.ReplaceKeyProperty=ReplacePropertyValue", "SetAllowTSConnections", objInParam) ' List OutParams Wscript.Echo "Out Parameters: " Wscript.echo "ReturnValue: " & objOutParams.ReturnValue Ругается : Ошибка код 8004103A Недопустимый путь к обекту. Источник SWbemSevicesEx. Строка 6 символ 1. Это - Set objShare = objWMIService.Get("Win32_TerminalServiceSetting.ReplaceKeyProperty=ReplacePropertyValue") Заранее спасибо |
Сообщ.
#225
,
|
|
|
Узнать баланс МТС. Работает с несколькими номерами... Записать всё в файл phones.txt и кинуть рядом со ь скриптом. Запись формата:
Мой_телефон +79160000000 0000 Где последние 0000 пароль от учётки Интернет помощника МТС. ЗЫ в Интернет помощник нужно заранее войти из IE. Const PhonePrefix = "+7" ' +7... PhoneLen = 12 ' полная длина телефонного номера PrefixLen = Len(PhonePrefix) ' = 2 'PrefixLen = 0 ' установить, если в форму надо вводить полный номер телефона (с +7) Const Curr = " руб." Const ForReading = 1 Const ForWriting = 2 Function GetBalance(phone, password, balance) Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = False 'objIE.Navigate "https://www.spb.mts.ru/selfcare/" ' МТС Санкт-Петербург objIE.Navigate "https://ihelper.mts.ru/selfcare/" ' МТС Москва While objIE.Busy WScript.Sleep 10 Wend Set objForm = objIE.Document.forms("aspnetForm") objForm.elements("ctl00$phContent$tbPhoneNumber").value = phone objForm.elements("ctl00$phContent$tbPassword").value = password objForm.elements("ctl00_phContent_btnEnter").click While objIE.Busy WScript.Sleep 10 Wend Set objForm = objIE.Document.forms("aspnetForm") balance = objForm.elements.all("customer-info-balance").InnerHTML objIE.quit End Function Set objFSO = CreateObject("Scripting.FileSystemObject") Set PhoneFile = objFSO.OpenTextFile("phones.txt", ForReading) Set objExplorer = CreateObject("InternetExplorer.Application") objExplorer.Navigate "about:blank" objExplorer.ToolBar = 0 objExplorer.StatusBar = 0 objExplorer.Width = 300 objExplorer.Height = 400 objExplorer.Left = 0 objExplorer.Top = 0 Do While (objExplorer.Busy) Wscript.Sleep 10 Loop objExplorer.Document.Title = "Balance Information" objExplorer.Visible = 1 objExplorer.Document.Body.InnerHTML = "" With PhoneFile Do Until .AtEndOfStream strLine = .ReadLine If (Trim(strLine) <> "") and (Instr(strLine,PhonePrefix) > 0) Then alias = mid(strline,1,Instr(strLine,PhonePrefix)-1) ' название телефона tmp = mid(strline,Instr(strLine,"+7")+PrefixLen,255) ' эта строка начинается с номера телефона (без +7) phone = mid(tmp,1,Instr(tmp," ")-1) ' телефон тут (без +7) tmp = Trim(mid(strline,Len(alias) + Len(phone) + 1 + PrefixLen,255)) ' эта строка начинается с пароля pass = Trim(mid(tmp,1,Instr(tmp," "))) ' если после пароля еще есть пробелы - отделим их if pass = "" Then ' если нету - и не надо... pass = tmp End If alias = Trim(alias) ' обрезаем пробелы ' wscript.echo alias & ":" & phone& ":" & pass & ":" ' ****************** отладка If (Len(phone) = PhoneLen - PrefixLen) Then Call GetBalance(phone,pass, sum) objExplorer.Document.Body.InnerHTML = objExplorer.Document.Body.InnerHTML & "<B>" & alias & "</B>" & ": " & sum & Curr & "<BR>" ' wscript.echo alias & ":" & phone & ":" & sum ' ****************** отладка End If End If Loop .Close End With objExplorer.Document.Body.InnerHTML = objExplorer.Document.Body.InnerHTML & "<BR><B>OK</B>" |