Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Logon script для компьютеров в группе AD

Ответить
Настройки темы
VBS/WSH/JS - [решено] Logon script для компьютеров в группе AD

Аватара для Rolenarim

Старожил


Сообщения: 150
Благодарности: 26


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день.

Есть скрипт VBS для пользователей, который запускается через GPO при входе пользователя в систему.

Все бы ничего, но он, как ему и положено, также запускается и на терминальном сервере, что не рационально.

Есть желание добавить в скрипт сначала проверку компьютера, на то, что он входит в группу компьютеров AD (например SC) и уже тогда полностью отрабатывать скрипт, если данного компьютера нет в группе, то завершение скрипта.

Сначала хотел прописать наличие имени компьютера в файле SC.txt, но это будет нелогично, ведь компьютеры могут добавиться и каждый раз придется править также этот файл.

Надеюсь на вашу помощь в доработке скрипта.

-------
Если информация Вам помогла, не забывайте нажимать под ней на кнопку "Полезное сообщение"


Отправлено: 08:35, 25-09-2015

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Rolenarim, а разве OU с указанными компьютерами нет? Это ведь указывалось в условии.

Отправлено: 23:39, 26-09-2015 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Rolenarim

Старожил


Сообщения: 150
Благодарности: 26

Профиль | Отправить PM | Цитировать


На данный момент все компьютеры находятся в 2-х OU (Domain Controllers и Computers), Ни та ни другая OU не содержит того перечня компьютеров (вместе взятых), необходимых для обрабатываемого скрипта.

Однако есть еще OU Group и внутри нее подгруппа SC (не знаю как она характеризуется), в нее я и включил нужный список компьютеров.

UPD:

В общем создал дополнительные OU, в которых разбил более детально все машины и сделал скрипт на основе предложения Iska:

Код: Выделить весь код
If StrComp( _
		GetObject("LDAP://" & WScript.CreateObject("ADSystemInfo").ComputerName).Parent, _
		"LDAP://OU=DopOU,DC=SRV,DC=RU", _
		vbTextCompare _
	) = 0 Then
	
	' Place your code here
End If
Спасибо за помощь.

-------
Если информация Вам помогла, не забывайте нажимать под ней на кнопку "Полезное сообщение"


Последний раз редактировалось Rolenarim, 28-09-2015 в 13:54. Причина: Задача решена


Отправлено: 07:11, 28-09-2015 | #12


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Elven:
Rolenarim, а разве OU с указанными компьютерами нет? Это ведь указывалось в условии. »
Нет. По скриншоту видно, что «SC» — это группа безопасности.

Цитата Rolenarim:
и внутри нее подгруппа SC (не знаю как она характеризуется) »
Вот это — именно группа безопасности, а не OU.

В этом случае проверку можно обустроить следующим образом (на основе IsMember2, работает и для опосредованного членства в группе):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strGroup

Dim objGroupList
Dim objADObject


strGroup = "SC"

Set objADObject = GetObject("LDAP://" & WScript.CreateObject("ADSystemInfo").ComputerName)

If IsMember(strGroup) Then
	' Place your code here
End If

WScript.Quit 0
'=============================================================================

'=============================================================================
Function IsMember(ByVal strGroup)
	If (IsEmpty(objGroupList) = True) Then
		Set objGroupList = WScript.CreateObject("Scripting.Dictionary")
		Call LoadGroups(objADObject)
	End If
	
	IsMember = objGroupList.Exists(strGroup)
End Function
'=============================================================================

'=============================================================================
Sub LoadGroups(ByVal objADObject)
	Dim colstrGroups, objGroup, j
	
	objGroupList.CompareMode = vbTextCompare
	colstrGroups = objADObject.memberOf
	
	If (IsEmpty(colstrGroups) = True) Then
		Exit Sub
	End If
	
	If (TypeName(colstrGroups) = "String") Then
		colstrGroups = Replace(colstrGroups, "/", "\/")
		
		Set objGroup = GetObject("LDAP://" & colstrGroups)
		
		If (objGroupList.Exists(objGroup.sAMAccountName) = False) Then
			objGroupList.Add objGroup.sAMAccountName, True
			Call LoadGroups(objGroup)
		End If
		Exit Sub
	End If
	
	For j = LBound(colstrGroups) To UBound(colstrGroups)
		colstrGroups(j) = Replace(colstrGroups(j), "/", "\/")
		
		Set objGroup = GetObject("LDAP://" & colstrGroups(j))
		
		If (objGroupList.Exists(objGroup.sAMAccountName) = False) Then
			objGroupList.Add objGroup.sAMAccountName, True
			Call LoadGroups(objGroup)
		End If
	Next
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:28, 28-09-2015 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Logon script для компьютеров в группе AD

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Задание в шедуллер с помощью logon script svenser@vk Windows Server 2008/2008 R2 2 19-03-2015 14:10
[решено] Отмена Logon Script Kaimor Microsoft Windows NT/2000/2003 5 19-01-2012 17:43
Надо убить Logon script в Доменной политике NiOl Microsoft Windows NT/2000/2003 7 04-06-2010 14:47
logon script на серевере терминалов klesk Microsoft Windows NT/2000/2003 1 22-05-2008 02:19
NT4 W2K сервер и W9X-ME logon script Guest Microsoft Windows NT/2000/2003 6 16-10-2003 16:41




 
Переход