<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS:Получение списка учетных записей AD с расширенными свойствами УЗ??]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8468&amp;type=atom" />
	<updated>2013-07-14T18:16:23Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8468</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS:Получение списка учетных записей AD с расширенными свойствами УЗ??]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73763#p73763" />
			<content type="html"><![CDATA[<p>Я в своей программке проверял у/з на отключенность такой процедуркой:</p><div class="codebox"><pre><code>
&#039;--- Тест переданного объекта на отключенность&#039;
&#039; distName -- выражение типа &quot;LDAP://.../CN=....,ou=...,dc=...&quot;
Function uf_isAccountDisabled(distName)
    result = False
    On Error Resume Next
    Err.Clear
    Set obj = GetObject(distName) 
    If Err.Number = 0 Then
        IF obj.AccountDisabled = True Then 
            result = True 
        End If 
    End IF &#039;Err.Number = 0&#039;
    On Error GoTo 0
    uf_isAccountDisabled = result 
End Function
</code></pre></div><p>А у/з пользователя проверял еще и так <br />(привожу не отдельной функцией, а куском из живого кода, думаю, что понять несложно):<br /></p><div class="codebox"><pre><code>
&#039;[...]&#039;            
&#039; в &quot;tUsrAccount.value&quot; - логин пользоваеля
&#039; в &quot;sDC&quot; - имя контролера домена

sFndExpr = &quot;samAccountName=&quot; &amp; tUsrAccount.value
objCommand.CommandText = _
    &quot;&lt;LDAP://&quot; &amp; sDC &amp; &quot;&gt;;&quot; &amp;_
    &quot;(&amp;(objectCategory=person)(objectClass=user)(&quot; &amp; sFndExpr &amp; &quot;)&quot; &amp;_
    &quot;);distinguishedName,userAccountControl,accountExpires,lastLogon,ADSPath;Subtree&quot;
Set objRSet = objCommand.Execute
objRSet.MoveFirst

&#039;[...]&#039;
&#039;--- отключенность учетки&#039;
intUAC=objRSet.Fields(&quot;userAccountControl&quot;)
If intUAC AND 2 Then
    &#039;&#039;&#039;&#039;&#039; This Account -- DISABLED
End If
&#039;[...]&#039;
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2013-07-14T18:16:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73763#p73763</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS:Получение списка учетных записей AD с расширенными свойствами УЗ??]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73670#p73670" />
			<content type="html"><![CDATA[<p>Добрый день, коллеги!</p><p>Понадобилось написать скрипт, который будет выгружать БД данные по всем учетным записям в AD. Путем копипаста, получился такой вот скрипт.<br /></p><div class="codebox"><pre><code>&#039;***************************************************************** 
&#039;ListAllUsers_GAL_Export1.vbs 
&#039; by Paul DiGiorgio 
&#039;  &lt; pdsd@yahoo.com &gt; 
&#039;  30 Aug 2005 
&#039; 
&#039; This script polls the current domain and looks for 
&#039;  user objects. If the user object contains data for the 
&#039;  mail attribute, it outputs the user display name 
&#039;  then a comma, then the user&#039;s mail data. 
&#039;***************************************************************** 
&#039;1.00 - Created 30 August 2005 by Paul DiGiorgio 
&#039;***************************************************************** 
&#039;1.01 - Modified 1 September 2005 by Paul DiGiorgio 
&#039;       - Removed the inputbox, so the file is always called GAL_Export.csv 
&#039;         If the file already exists, it will be overwritten. 
&#039;***************************************************************** 
Option Explicit 
 
Dim StartTime,EndTime: StartTime = Now &#039; For seeing how long the script takes to run 
Dim objShell 
Dim objFSO 
Const ScriptVersion = &quot;1.01&quot; 
Set objShell = WScript.CreateObject(&quot;WScript.Shell&quot;) 
Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;) 
Wscript.Echo &quot;StartTime = &quot; &amp; StartTime 
&#039; ***************************************************************** &#039; 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Dim objRootDSE 
Dim objDomain 
Dim objContainer 
Dim objOrganizationalUnit 
Dim strOutputFileName, objOutputFileName, GarbageRC 
Dim intUserObjectCountAll, intUserObjectCountSelected 
 
strOutputFileName = &quot;GAL_Export.csv&quot; 
 
Set objOutputFileName = objFSO.OpenTextFile(strOutputFileName, ForWriting, True) 
intUserObjectCountAll = 0 
intUserObjectCountSelected = 0 
 
Set objRootDSE = GetObject(&quot;LDAP://RootDSE&quot;) 
Set objDomain = GetObject(&quot;LDAP://&quot; &amp; objRootDSE.Get(&quot;DefaultNamingContext&quot;)) 
 
Call Sub_EnumOUs(objDomain.ADsPath) 
 
Sub Sub_EnumOUs(sADsPath) 
    Set objContainer = GetObject(sADsPath) 
    objContainer.Filter = Array(&quot;OrganizationalUnit&quot;) 
    For Each objOrganizationalUnit in objContainer 
        WScript.Echo &quot;Checking OU: &quot; &amp; objOrganizationalUnit.ADsPath 
        Wscript.Echo &quot; User Object Count: &quot; &amp; intUserObjectCountAll 
        Sub_EnumUsers(objOrganizationalUnit.ADsPath) 
        Sub_EnumOUs(objOrganizationalUnit.ADsPath) 
    Next 
End Sub 
 
Sub Sub_EnumUsers(sADsPath) 
    Dim objADobject 
    Set objContainer = GetObject(sADsPath) 
    objContainer.Filter = Array(&quot;User&quot;) 
    For Each objADobject in objContainer 
        If objADobject.Class = &quot;user&quot; Then 
            intUserObjectCountAll = intUserObjectCountAll + 1 
                If objADobject.department=&quot;&quot; Then
                    objADobject.department= &quot;NULL&quot;
                End If
                If objADobject.Title =&quot;&quot; Then
                    objADobject.Title = &quot;NULL&quot;
                End If
                If objADobject.TelephoneNumber =&quot;&quot; Then
                    objADobject.TelephoneNumber = &quot;NULL&quot;
                End If
                If objADobject.mail =&quot;&quot; Then
                    objADobject.mail = &quot;NULL&quot;
                End if
                objOutputFileName.Writeline(objADobject.department &amp; &quot;|&quot; &amp; objADobject.Title &amp; &quot;|&quot; &amp; objADobject.TelephoneNumber &amp; &quot;|&quot; &amp; objADobject.displayname &amp; &quot;|&quot; &amp; objADobject.Mail &amp; &quot;|&quot; &amp; objADobject.lockoutTime) 
                intUserObjectCountSelected = intUserObjectCountSelected + 1 
        End If 
    Next 
End Sub 
 
objOutputFileName.Close 
&#039; ***************************************************************** &#039; 
EndTime = Now 
Wscript.Echo vbCrLf &amp; &quot;EndTime = &quot; &amp; EndTime 
Wscript.Echo &quot;Seconds Elapsed: &quot; &amp; DateDiff(&quot;s&quot;, StartTime, EndTime) 
Wscript.Echo &quot;Script Complete&quot; 
Wscript.Quit(0) 
&#039; ***************************************************************** &#039;</code></pre></div><p>Скрипт в принципе уже получает все необходимые данные, но не могу получить последнее поле, а именно статус учетки включена/отключена. Подскажите, как можно добраться до этого свойства учетки??</p>]]></content>
			<author>
				<name><![CDATA[Ganzales]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3401</uri>
			</author>
			<updated>2013-07-12T07:48:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73670#p73670</id>
		</entry>
</feed>
