<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: Проверка членства в группах для указанного пользователя]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=527&amp;type=atom" />
	<updated>2007-07-03T18:05:12Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=527</id>
		<entry>
			<title type="html"><![CDATA[VBScript: Проверка членства в группах для указанного пользователя]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=3365#p3365" />
			<content type="html"><![CDATA[<p>Иногда бывает необходимо писать логон-скрипты, в которых производятся определённые действия (например, подключаются сетевые диски) в зависимости от членства текущего пользователя в определённых группах. При этом бывает важно не только явное членство, но и неявное (пользователь входит в группу, которая сама входит в другую группу и т.д.). Приведённая ниже в скрипте процедура возвращает список всех групп, в которые входит указанный пользователь.<br /></p><div class="codebox"><pre><code>Set WshNet = CreateObject(&quot;WScript.Network&quot;)
usrDomain = WshNet.UserDomain
usrPath = &quot;WinNT://&quot; &amp; usrDomain &amp; &quot;/&quot; &amp; WshNet.UserName
outGr = &quot;&quot;
GetGroups usrDomain, usrPath, outGr
If Right(outGr, 2) = VbCrLf Then outGr = Left(outGr, Len(outGr)-2)
WScript.Echo outGr

&#039; Процедура возвращает список групп, разделённых переводами строки,
&#039; в которые входит (как явно, так и неявно) указанный доменный пользователь.
&#039; Параметры:
&#039; UserDomain - имя домена.
&#039; ADsPath - имя пользователя в формате &quot;WinNT://domain/user&quot;.
&#039; outGroups - выходная переменная (строка), заполняется процедурой.
Sub GetGroups(UserDomain, ADsPath, outGroups)
    Set Container = GetObject(&quot;WinNT://&quot; &amp; UserDomain)
    Container.Filter = Array(&quot;Group&quot;)
    For Each Group In Container
        If Group.IsMember(ADsPath) Then
            If InStr(outGroups, Group.Name &amp; VbCrLf) = 0 Then
                outGroups = outGroups &amp; Group.Name &amp; VbCrLf
            End If
            GetGroups UserDomain, Group.ADsPath, outGroups
        End If
    Next
End Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-07-03T18:05:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=3365#p3365</id>
		</entry>
</feed>
