Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.207.160.209] |
|
Страницы: (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? Потому как скрипт утверждает что сетевой путь не найден. |