
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (22) « Первая ... 12 13 [14] 15 16 ... 21 22 ( Перейти к последнему сообщению ) |
Сообщ.
#196
,
|
|
|
Подскажите пожалуйста как в следующем скрипте сделать так чтобы проверялось имя компьютера и если оно например равно spb1, то запись в файл не скидывать......ну тоесть нужно исключить пару компьютеров
Dim objAD, objUserName, objComputerName Dim objFS, objFile Const strPath = "\\server\log.txt" 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 |
Сообщ.
#197
,
|
|
|
![]() ![]() Dim objAD, objUserName, objComputerName Dim objFS, objFile Const strPath = "\\server\log.txt" Const ForAppending = 8 Set objAD = CreateObject("ADSystemInfo") Set objUserName = GetObject("LDAP://" & objAD.UserName) Set objComputerName = GetObject("LDAP://" & objAD.ComputerName) If objAD.ComputerName <> "spb1" 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 End If Set objUserName = Nothing Set objComputerName = Nothing Set objAD = Nothing |
Сообщ.
#198
,
|
|
|
Есть скрипт , который добавляет в дескрипшен компа имя залогиненого пользователя, можно ли зделать так чтобы подставлялся не логин а полное имя с фамилией из AD
On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colComputer = objWMIService.ExecQuery _ ("Select * from Win32_ComputerSystem") For Each objComputer In colComputer strNewDescription = objComputer.UserName Next st=right(strNewDescription,len(strNewDescription)-8) Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_UserAccount WHERE Name='" & st & "'", , 48) For Each objItem In colItems strNewDescription = objItem.FullName Next Set objWMIService = GetObject("winmgmts:\\" & strComputer).InstancesOf("Win32_OperatingSystem") For Each x In objWMIService x.Description = strNewDescription x.Put_ Next |
Сообщ.
#199
,
|
|
|
Цитата alec1024 @ Приведённый Вами сценарий успешно выполняет указанную задачу. ...можно ли зделать так чтобы подставлялся не логин а полное имя с фамилией из AD ![]() Совет: вместо конструкции ![]() ![]() Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colComputer = objWMIService.ExecQuery _ ("Select * from Win32_ComputerSystem") For Each objComputer In colComputer strNewDescription = objComputer.UserName Next st=right(strNewDescription,len(strNewDescription)-8) Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_UserAccount WHERE Name='" & st & "'", , 48) For Each objItem In colItems strNewDescription = objItem.FullName Next можно использовать такой её аналог ![]() ![]() Set objWSNet = CreateObject("WScript.Network") st = objWSNet.UserName strDomain = objWSNet.UserDomain Set objUser = GetObject("WinNT://" & strDomain & "/" & st & ",user") strNewDescription = objUser.FullName |
Сообщ.
#200
,
|
|
|
Цитата Dmitrii @ Цитата alec1024 @ Приведённый Вами сценарий успешно выполняет указанную задачу. ...можно ли зделать так чтобы подставлялся не логин а полное имя с фамилией из AD ![]() Совет: вместо конструкции ![]() ![]() Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colComputer = objWMIService.ExecQuery _ ("Select * from Win32_ComputerSystem") For Each objComputer In colComputer strNewDescription = objComputer.UserName Next st=right(strNewDescription,len(strNewDescription)-8) Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_UserAccount WHERE Name='" & st & "'", , 48) For Each objItem In colItems strNewDescription = objItem.FullName Next можно использовать такой её аналог ![]() ![]() Set objWSNet = CreateObject("WScript.Network") st = objWSNet.UserName strDomain = objWSNet.UserDomain Set objUser = GetObject("WinNT://" & strDomain & "/" & st & ",user") strNewDescription = objUser.FullName А не подскажете каким образом этот скрипт можно запустить на удаленном компьютере, на котором пользователь не админ. Ведь нужны админские права чтоб поменять дескрипшен? |
Сообщ.
#201
,
|
|
|
Цитата alec1024 @ Если Вам известны имя и пароль учётной записи администратора домена или локального администратора удалённой станции, то так, например:... каким образом этот скрипт можно запустить на удаленном компьютере, на котором пользователь не админ. Ведь нужны админские права чтоб поменять дескрипшен? ![]() ![]() Dim strComputer, strDomain Dim strUser, strUserPass, strDescription Dim objWSNet, objUser Dim objLocator, objService Dim objCollection, objItem Set objWSNet = CreateObject("WScript.Network") strDomain = objWSNet.UserDomain Set objWSNet = Nothing strUser = "имя учётной записи администратора" strUserPass = "пароль учётной записи администратора" strComputer = "имя удалённой станции" Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(strComputer, "root\cimv2", strDomain & "\" & strUser, strUserPass) Set objCollection = objService.InstancesOf("Win32_ComputerSystem") For Each objItem In objCollection strDescription = objItem.UserName Next If IsNull(strDescription) Then WScript.Echo "Имя пользователя не определёно." Else strDescription = Replace(strDescription, "\", "/") Set objUser = GetObject("WinNT://" & strDescription & ",user") strDescription = objUser.FullName Set objUser = Nothing Set objCollection = objService.InstancesOf("Win32_OperatingSystem") For Each objItem In objCollection objItem.Description = strDescription objItem.Put_ Next Set objItem = Nothing WScript.Echo "Готово." End If Set objCollection = Nothing Set objService = Nothing Set objLocator = Nothing |
Сообщ.
#202
,
|
|
|
Цитата Dmitrii @ Цитата alec1024 @ Если Вам известны имя и пароль учётной записи администратора домена или локального администратора удалённой станции, то так, например:... каким образом этот скрипт можно запустить на удаленном компьютере, на котором пользователь не админ. Ведь нужны админские права чтоб поменять дескрипшен? ![]() ![]() Dim strComputer, strDomain Dim strUser, strUserPass, strDescription Dim objWSNet, objUser Dim objLocator, objService Dim objCollection, objItem Set objWSNet = CreateObject("WScript.Network") strDomain = objWSNet.UserDomain Set objWSNet = Nothing strUser = "имя учётной записи администратора" strUserPass = "пароль учётной записи администратора" strComputer = "имя удалённой станции" Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(strComputer, "root\cimv2", strDomain & "\" & strUser, strUserPass) Set objCollection = objService.InstancesOf("Win32_ComputerSystem") For Each objItem In objCollection strDescription = objItem.UserName Next If IsNull(strDescription) Then WScript.Echo "Имя пользователя не определёно." Else strDescription = Replace(strDescription, "\", "/") Set objUser = GetObject("WinNT://" & strDescription & ",user") strDescription = objUser.FullName Set objUser = Nothing Set objCollection = objService.InstancesOf("Win32_OperatingSystem") For Each objItem In objCollection objItem.Description = strDescription objItem.Put_ Next Set objItem = Nothing WScript.Echo "Готово." End If Set objCollection = Nothing Set objService = Nothing Set objLocator = Nothing Большое Спасибо!!!!!! А есть возможность этот скрипт запустить автоматом на всех компах домена ,без указывания конкретного компа? |
Сообщ.
#203
,
|
|
|
Цитата alec1024 @ Здесь всё просто:... без указывания конкретного компа? ![]() ![]() Set objWSNet = CreateObject("WScript.Network") strComputer = objWSNet.ComputerName Set objWSNet = Nothing Цитата alec1024 @ Подразумевается использование групповой политики Конфигурация пользователя - Конфигурация Windows - Сценарии (вход/выход из системы)? Если - "да", то нельзя.А есть возможность этот скрипт запустить автоматом на всех компах домена... Впрочем, загляните сюда Полезные скрипты, сообщение #93. Можно попробовать задействовать указанный там способ. |
Сообщ.
#204
,
|
|
|
подскажите пожалуйста, как по логину в AD получить имя компьютера на котором он сидит? на входе логин, на выходе имя компьютера, в идеале с ip)
|
Сообщ.
#205
,
|
|
|
Цитата illus @ Обратите внимание на сценарий, помещённый в сообщении 110 данной темы:... как по логину в AD получить имя компьютера на котором он сидит? на входе логин, на выходе имя компьютера, в идеале с ip) http://forum.sources.ru/index.php?showtopi...dpost&p=1857889 Здесь решается очень похожая задача. |
Сообщ.
#206
,
|
|
|
c:\temp_script.sm(53, 1) (null): сетевой путь не найден , с чем может быть связана ошибка при запуске скрипта?
|
Сообщ.
#207
,
|
|
|
Цитата illus @ c:\temp_script.sm(53, 1) (null): сетевой путь не найден , с чем может быть связана ошибка при запуске скрипта? 1. Что такое temp_script.sm? 2. При выполнении какой строки кода появляется такая ошибка? |
Сообщ.
#208
,
|
|
|
в сообщении 110 данной темы я взял целиком код, однако, при выполнении появляется консольное окошко с данной ошибкой, адрес строки и подобные аттрибуты не указаны
|
Сообщ.
#209
,
|
|
|
Цитата illus @ Адрес строки с ошибкой указан: 53. Мы с Вами на него просто не обратили внимание. ... адрес строки и подобные аттрибуты не указаны ![]() Цитата illus @ Следовало внимательно просмотреть код, прежде, чем использовать. В строке 53 надо указать реальное имя домена, вместо моего комментария.в сообщении 110 данной темы я взял целиком код, однако, при выполнении появляется консольное окошко с данной ошибкой... Впрочем, чтобы не "связываться" с константой, строку Const strDomane = "здесь - DNS-имя домена" замените на фрагмент: ![]() ![]() Dim strDomane, objWSNet Set objWSNet = CreateObject("WScript.Network") strDomane = objWSNet.UserDomain Set objWSNet = Nothing Наконец, стоит исправить и мою опечатку: в теле функции Computers_List() замените strDomane на strDomain (в коде исходного примера соответствующие исправления уже сделаны). |
Сообщ.
#210
,
|
|
|
Function Comuters_List(arrTemp)
Dim objAD, objComputer, strTemp, strList Dim strDomain, objWSNet Set objWSNet = CreateObject("WScript.Network") strDomain = objWSNet.UserDomain Set objWSNet = Nothing Const strGroup = "Компьютеры домена" 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) Call Sorting_Array(arrTemp) End Function и я так понимаю что бы скрипт законектился к домену необходимо прописать имя домена в strDomain? Потому как скрипт утверждает что сетевой путь не найден. |