<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: Проверка членства в группах для указанного пользователя]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=527</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=527&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: Проверка членства в группах для указанного пользователя».]]></description>
		<lastBuildDate>Tue, 03 Jul 2007 18:05:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBScript: Проверка членства в группах для указанного пользователя]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3365#p3365</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Tue, 03 Jul 2007 18:05:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3365#p3365</guid>
		</item>
	</channel>
</rss>
