scripting@wanadoo.nl




InOU()

http://www.scriptlogic.com/kixtart/FunctionLibrary_FunctionList.aspx


actual FunctionLibrary list on 'Scriptlogic' site printer-friendly mirror of UDF topic on 'scripting@wanadoo.nl' site close
9 May 2002 InOU()
AuthorHeitz Alex (HeitzAlexandre@wanadoo.fr)
Action Check user/computer OU from Active Directory Updated on 05/09/2002, 9x/NTx flavor only.
SyntaxInOU ("OU Name", ["IsComputer"]) 
Parameters
  • OU Name (Required / String) The OU name to check, without OU=
  • IsComputer (Optional / String) If IsComputer len is greater than 0, the OU name Owner will be checked for the current workstation, instead of the current user. As of this, you can put any value to IsComputer, from string to number 
  • RemarksThe 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. 
    Returns0 if the user/workstation doesn't belong to the given OU
    1 if the user/workstation belongs to the given OU 
    DependenciesActive 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 -
     
      original source of UDF topic. show actual FunctionLibrary list on Scriptlogic site close top
              printer-friendly mirror of UDF topic on scripting@wanadoo.nl site  




    Copyright © 2003 www.scriptlogic.com & scripting@wanadoo.nl - last updated on 20 May 2003


    Site Meter