Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.173.48.18] |
|
Страницы: (22) « Первая ... 4 5 [6] 7 8 ... 21 22 ( Перейти к последнему сообщению ) |
Сообщ.
#76
,
|
|
|
Сообщ.
#77
,
|
|
|
Легальными средствами нельзя.
Цитата Mbus @ Для начала посмотрите уже имеющиеся в этой теме примеры: Полезные скрипты, сообщение #5, а затем вот этот пример:В консоли ActiveDirectory все пользователи размещаются не просто в домене а в подпапке (подразделе) Users, как там создавать пользователя? Dim strPath, strUsrSAMAN, intUserAC Dim objAD, objContainer, objUser strPath = "LDAP://ou=Пользователи,ou=Склад,dc=domain_name,dc=ru" strUsrSAMAN = "Кладовщик" Set objContainer = GetObject(strPath) Set objAD = objContainer.Create("user", "cn=" & strUsrSAMAN) objAD.Put "sAMAccountName", strUsrSAMAN objAD.Put "displayName", strUsrSAMAN objAD.Put "userPrincipalName", strUsrSAMAN objAD.SetInfo Речь идёт о свойстве пользовательской "учётки" Запретить смену пароля пользователем? Цитата DataKill @ В групповой политике для всего домена задайте входной сценарий. Такой, например:Мне нужно чтобы ... в какйо-то лог писалось под каким именем на любом компьютере в локальной сети вошли Dim objAD, objUserName, objComputerName Dim objFS, objFile Const strPath = "C:\Temp\Log.txt" 'Здесь надо задать UNC-путь к доступному для всех пользователей на запись сетевому ресурсу Const ForAppending = 8 Set objAD = CreateObject("ADSystemInfo") Set objUserName = GetObject("LDAP://" & objAD.UserName) Set objComputerName = GetObject("LDAP://" & objAD.ComputerName) Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.OpenTextFile(strPath, ForAppending, True) objFile.WriteLine(Date & ";" & Time & ";" & objComputerName.cn & ";" & objUserName.cn) objFile.Close Set objFS = Nothing Set objFile = Nothing Set objUserName = Nothing Set objComputerName = Nothing Set objAD = Nothing Цитата Mbus @ В принципе можно, но здесь дело посложнее, т.к. нужно организовать (для каждой станции) процедуру слежения за системным событием создания процесса. Хотите подзаняться WMI? И еще можно как-то соорудить скрипт или что-то иное, чтобы также логилось или отсылалось кто в сети запустил программу из меню "Запуск от имени"? |
Сообщ.
#78
,
|
|
|
Многие скрипты требуют наличия прав админа для своего выполнения. Как скриптом получить права админа? Вот например мне надо в рабочей группе из 20 компов создать юзера "test" и задать его пароль. Меня нет в этом офисе. Но я скинул по почте скрипт. У пользователей права юзеров. Пароль можно светить.
|
Сообщ.
#79
,
|
|
|
Цитата zerghack007 @ Пароль можно светить. О каком пароле речь? Если о пароле пользователя test, то никак. Если о пароле админа, то два варианта: 1. Залогиниться под админом и выполнить скрипт. 2. Создать ярлык с путем %windir%\system32\wscript.EXE "C:\Documents and Settings\<username>\Рабочий стол\script.vbs" и дальше Run as... |
Сообщ.
#80
,
|
|
|
Цитата Domino @ О каком пароле речь? Речь идет о пароле админа. Цитата 2. Создать ярлык с путем %windir%\system32\wscript.EXE "C:\Documents and Settings\<username>\Рабочий стол\script.vbs" и дальше Run as... В данном случае получается, что я должен сообщить Логин и Пароль админа пользователям, а я спрашивал про возможность получать права админа скриптом - просто нужно что бы в скрипте задавался параметр, что всё что дальше будет в нём происходить - будет происходить с правами локального администратора |
Сообщ.
#81
,
|
|
|
Вот что-то такое нашел. Но не работает.
! Теги CODE Кто ставить будет? Страуструп? On Error Resume Next Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") CompName = "compname" 'имя компьютера UserName = "firma.local\Admin" 'имя пользователя Pass = "password" 'пароль пользователя Set objServices = objSWbemLocator.ConnectServer(CompName, "root\CIMV2", UserName, Pass) If Err.Number <> 0 Then WScript.Echo Err.Number & ": " & Err.Description WScript.Quit End If Dim objComputer ' Экземпляр объекта Computer Dim objUser ' Экземпляр объекта User Dim strUser ' Имя создаваемого пользователя ' Задаем имя пользователя strUser = "test" Set objComputer = objServices.GetObject("WinNT://compname") Set objUser = objComputer.Create("user",strUser) objUser.Description = "Этот пользователь создан из сценария ADSI" ' Сохраняем информацию на компьютере objUser.SetInfo |
Сообщ.
#82
,
|
|
|
zerghack007, если использовать сценарии, то скрыть пароль администратора домена не удастся, т.к. сценарий - не более, чем простой текстовый файл, содержимое которого не сможет посмотреть только ленивый. При этом совершенно неважно, какой технологией Вы будете пользоваться: WMI или ADSI.
Цитата Domino @ Если речь о том, что нельзя задать пароль пользователя при создании его "учётки" с помощью сенария, то это НЕВЕРНО. За решение этой задачи отвечает метод SetPassword объекта типа Пользователь.Если о пароле пользователя test, то никак Пример от AlexLine можно увидеть в самом первом сообщении этой темы. |
Сообщ.
#83
,
|
|
|
Нашел выход из ситуации и пароль светить не надо.
'******************************************************************** ' Имя: AddUser.vbs ' Язык: VBScript ' Описание: Создание нового локального пользователя компьютера '******************************************************************** Option Explicit 'Объявляем переменные Dim objComputer ' Экземпляр объекта Computer Dim objUser ' Экземпляр объекта User Dim strComputer ' Имя компа Dim strUser ' Имя создаваемого пользователя Dim strpass ' пароль пользователя ' Задаем имя пользователя и пароль strComputer = "." strUser = "test" strpass = "1" ' Связываемся с компьютером Set objComputer = GetObject("WinNT://"& strComputer) ' Создаем объект класса User Set objUser = objComputer.Create("user",strUser) ' Добавляем описание и пароль созданного пользователя objUser.Description = "Этот пользователь создан из сценария ADSI" objUser.SetPassword strpass ' Сохраняем информацию на компьютере objUser.SetInfo '******************************************************************** ' Имя: StartRemouteScript.vbs ' Язык: VBScript ' Описание: Запуск скрипта на удаленном компе '******************************************************************** On Error Resume Next Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") CompName = "Имя компа" 'имя компьютера UserName = "Имя пользователя"'имя пользователя Pass = "Пароль" 'пароль пользователя Set objServices = objSWbemLocator.ConnectServer(CompName, "root\CIMV2", UserName, Pass, Null, Null, 0) If Err.Number <> 0 Then WScript.Echo Err.Number & ": " & Err.Description WScript.Quit End If Set objClass = objServices.Get("Win32_Process") Res = objClass.Create("wscript.exe C:\AddUser.vbs", Null, Null, PID) If Res <> 0 Then WScript.Echo "Код ошибки: " & Res End If Единственная проблема в том, что я могу запустить скрипт только с локального диска. А как его запустить с замапленного диска? И еще вопрос: как скопировать фаил с локального диска на другой комп по сети (путь должен быть такой "\\compname\C$") И еще один вопросик: можно ли тачку из домена вывести скриптом? |
Сообщ.
#84
,
|
|
|
Цитата zerghack007 @ Или я чего-то не понимаю в условиях Вашей задачи, или Вы ошибаетесь, делая указанный выше вывод.Нашел выход из ситуации и пароль светить не надо. По поводу сценария, помещённого в Вашем сообщении #81. Как единое целое он не может работать в принципе, т.к. в нём делается попытка совместить технологии WMI и ADSI. В указанной ниже строке зелёным цветом помечено то, что относится к ADSI, красным - к WMI. Set objComputer = objServices.GetObject("WinNT://compname") |
Сообщ.
#85
,
|
|
|
срочно нужен скропт который в зависимости от аргумента скрипта или откл сетевой диск или проверить его сеществование первый аргумент скрпта ключ /d или /r второй аргумент имя сетевого диска
|
Сообщ.
#86
,
|
|
|
Нужен скрипт, который бы отслеживал запускаемый процесс и скрывал его окно.
Если у кого есть поделитесь, пож-ста. Такой не подходит: Set objApp = CreateObject("Shell.Application") ' Запуск файла objApp.ShellExecute "LineRec.exe", nil, nil, open, 0 |
Сообщ.
#87
,
|
|
|
Господа! Кто может показать как написать vbs-скрипт удаления сервиса и остановки процесса?
Спасибо огромное тому кто откликнется! |
Сообщ.
#88
,
|
|
|
Цитата blackangel @ ... как написать vbs-скрипт удаления сервиса... Насколько мне известно, удалить службу нельзя, можно лишь её остановить и запретить запуск. Пример подобного управления службой: Dim objWMI, objCollection, objItem, intRetCode Const strService = "Alerter" Set objWMI = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2") Set objCollection = objWMI.ExecQuery("SELECT StartMode,State FROM Win32_Service WHERE Name='" & strService & "'") For Each objItem In objCollection 'WScript.Echo objItem.StartMode & vbCr & objItem.State If StrComp(objItem.State, "Stopped", vbTextCompare) = 0 Then If StrComp(objItem.StartMode, "Disabled", vbTextCompare) = 0 Then intRetCode = objItem.ChangeStartMode("Manual") End If If intRetCode = 0 Then intRetCode = objItem.StartService If intRetCode = 0 Then WScript.Echo "Служба запущена. Режим её запуска изменён." Else WScript.Echo "Службу запустить не удалось." End If Else WScript.Echo "Режим запуска службы изменить не удалось." End If Else intRetCode = objItem.StopService If intRetCode = 0 Then intRetCode = objItem.ChangeStartMode("Disabled") If intRetCode = 0 Then WScript.Echo "Служба остановлена. Режим её запуска изменён." Else WScript.Echo "Служба остановлена, но режим её запуска изменить не удалось." End If Else WScript.Echo "Службу остановить не удалось." End If End If Next Set objCollection = Nothing Set objWMI = Nothing |
Сообщ.
#89
,
|
|
|
Вот код завершения процесса на удаленной машине с правами указанного пользователя(взят из MSDN).
Почему этот скрипт не работает с машины которую я указываю в "FullComputerName", т.е. локально? Указанный пользователь- доменный администратор. Пишет ошибку: User credentials cannot be used for local conections Как это обойти? strComputer = "FullComputerName" strDomain = "DOMAIN" strUser = InputBox("Enter user name") strPassword = InputBox("Enter password") Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _ "root\CIMV2", _ strUser, _ strPassword, _ "MS_409", _ "ntlmdomain:" + strDomain) Set colProcessList = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'") For Each objProcess in colProcessList objProcess.Terminate() Next И еще вопросик. Если я помещаю скрипт с указанными правами админа в стартап GP, не грозит ли засветить паролем? На сколько безопасно выкладывать такие скрипты? Спасибо! |
Сообщ.
#90
,
|
|
|
Цитата blackangel @ Вы пробовали запускать сценарий на том компьютере, на котором работаете сами, или на удалённом? У меня, например, этот сценарий работает только при указании удалённой станции.... Пишет ошибку: User credentials cannot be used for local conections Цитата blackangel @ В принципе, кто знает, где искать, тот найдёт стартующий сценарий, и, разумеется, увидит пароль. Если я помещаю скрипт с указанными правами админа в стартап GP, не грозит ли засветить паролем? |