|
|
|
| 9 May 2002 | InOU() |
| Author | Heitz Alex (HeitzAlexandre@wanadoo.fr) |
| Action | Check user/computer OU from Active Directory Updated on 05/09/2002, 9x/NTx flavor only. |
| Syntax | InOU ("OU Name", ["IsComputer"]) |
| Parameters | |
| Remarks | The following variables have to be declared as is : GLOBAL $_InOUUser GLOBAL $_InOUComputer 2 flavors of this UDF are present below. One support only W2k, XP and upper OS. The other support from 9x to XP, but is a little more slow. |
| Returns | 0 if the user/workstation doesn't belong to the given OU 1 if the user/workstation belongs to the given OU |
| Dependencies | Active Directory client installed (Build-in in 2000 and XP systems) |
| Examples |
IF InOU("my Ou name") = 1
....
ENDIF
|
| Source |
FUNCTION InOU ($ouname, OPTIONAL $iscomputer) ; (Standalone version with W9x and NT4 support)
DIM $adocon
DIM $adocommand
DIM $recordset
DIM $filter
DIM $i
DIM $userid
DIM $rc
IF Len($iscomputer) > 0
$iscomputer=1
ELSE
$iscomputer=0
ENDIF
$inou=0
IF Len($_inouuser) > 0 AND Len($_inoucomputer) > 0
IF $iscomputer = 0
IF $_inouuser="Initialized but no OU available"
RETURN
ENDIF
FOR EACH $ouelement IN Split($_inouuser,",")
IF $ouelement = $ouname
$inou=1
ENDIF
NEXT
ELSE
IF $_inoucomputer = "Initialized but no OU available"
RETURN
ENDIF
FOR EACH $ouelement IN Split($_inoucomputer,",")
IF $ouelement = $ouname
$inou=1
ENDIF
NEXT
ENDIF
ELSE
IF @inwin = 2
$userid=@wuserid
ELSE
$userid=@userid
ENDIF
$adocon=CreateObject("ADODB.Connection")
$adocon.provider="ADsDSOObject"
$rc=$adocon.open("Active Directory Provider")
$adocommand=CreateObject("ADODB.Command")
$adocommand.activeconnection=$adocon
$filter=" where samAccountName='"+$userid+"' "
$adocommand.commandtext="Select AdsPath from 'LDAP://"+GetObject("LDAP://rootDSE").get("defaultNamingContext")+"' "+$filter
$recordset=$adocommand.execute
IF @error=0
; As a user name and/or computer name is unique in AD, only one record could exist
IF $recordset.recordcount = 1
$recordset.movefirst
FOR EACH $ouelement IN Split(Substr($recordset.fields("AdsPath").value,8),",")
IF Left($ouelement,3) = "OU="
$_inouuser=$_inouuser+Substr($ouelement,4)+","
IF $iscomputer = 0
IF Substr($ouelement,4) = $ouname
$inou=1
ENDIF
ENDIF
ENDIF
NEXT
IF Len($_inouuser) = 0
$_inouuser="Initialized but no OU available"
ENDIF
ENDIF
ENDIF
$filter=" where samAccountName='"+@wksta+"$$' "
$adocommand.commandtext="Select AdsPath from 'LDAP://"+GetObject("LDAP://rootDSE").get("defaultNamingContext")+"' "+$filter
$recordset=$adocommand.execute
IF @error = 0
; As a user name and/or computer name is unique in AD, only one record could exist
IF $recordset.recordcount = 1
$recordset.movefirst
FOR EACH $ouelement IN Split(Substr($recordset.fields("AdsPath").value,8),",")
IF Left($ouelement,3) = "OU="
$_inoucomputer=$_inoucomputer+Substr($ouelement,4)+","
IF $iscomputer = 1
IF Substr($ouelement,4) = $ouname
$inou=1
ENDIF
ENDIF
ENDIF
NEXT
IF Len($_inoucomputer) = 0
$_inoucomputer="Initialized but no OU available"
ENDIF
ENDIF
ENDIF
ENDIF
ENDFUNCTION ; - InOU -
|
| Source |
FUNCTION InOU ($ouname, OPTIONAL $iscomputer) ; (Standalone version restricted to Windows 2000 and XP systems)
DIM $ouelement
IF Len($iscomputer) > 0
$iscomputer=1
ELSE
$iscomputer=0
ENDIF
$inou=0
IF Len($_inouuser) > 0 AND Len($_inoucomputer) > 0
IF $iscomputer = 0
IF $_inouuser = "Initialized but no OU available"
RETURN
ENDIF
FOR EACH $ouelement IN Split($_inouuser,",")
IF $ouelement = $ouname
$inou=1
ENDIF
NEXT
ELSE
IF $_inoucomputer = "Initialized but no OU available"
RETURN
ENDIF
FOR EACH $ouelement IN Split($_inoucomputer,",")
IF $ouelement = $ouname
$inou=1
ENDIF
NEXT
ENDIF
ELSE
$sysinfo=CreateObject("adsysteminfo")
IF Len($sysinfo) > 0
FOR EACH $ouelement IN Split($sysinfo.username,",")
IF Left($ouelement,3) = "OU="
$_inouuser=$_inouuser+Substr($ouelement,4)+","
IF $iscomputer = 0
IF Substr($ouelement,4) = $ouname
$inou=1
ENDIF
ENDIF
ENDIF
NEXT
IF Len($_inouuser) = 0
$_inouuser="Initialized but no OU available"
ENDIF
FOR EACH $ouelement IN Split($sysinfo.computername,",")
IF Left($ouelement,3) = "OU="
$_inoucomputer=$_inoucomputer+","+Substr($ouelement,4)
IF $iscomputer = 1
IF Substr($ouelement,4) = $ouname
$inou=1
ENDIF
ENDIF
ENDIF
NEXT
IF Len($_inoucomputer) = 0
$_inoucomputer="Initialized but no OU available"
ENDIF
ENDIF
ENDIF
ENDFUNCTION ; - InOU -
|
|
|
|