Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

Veyon Community Forum

  1. Home
  2. Success stories & community contributions
  3. Script AutoIt to store MAC address in Active Directory

Script AutoIt to store MAC address in Active Directory

Scheduled Pinned Locked Moved Success stories & community contributions
2 Posts 2 Posters 896 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • lyc-appert-44L Offline
    lyc-appert-44L Offline
    lyc-appert-44
    wrote on last edited by
    #1

    Hello,
    I'v made a script to store MAC address in computer account for Active Directory:

    #include <AD.au3>
    
    ;Enter here a username of an account that can change users in AD
    $utilisateur=""
    ;Enter here the user password
    $motdepasse=""
    ;AD Connexion
    _AD_Open($utilisateur,$motdepasse)
    ;Call function that put MAC in attribut "networkAddress" of machine account
    _AD_ModifyAttributeEX(@computername & "$","networkAddress",GET_MAC(@IPAddress1),2)
    _AD_Close()
    
    Func _AD_ModifyAttributeEX($sObject, $sAttribute, $vValue = "", $iOption = 1)
    
        Local $aValue[1]
        If $vValue = Default Then $vValue = ""
        If $iOption = Default Then $iOption = 1
        If $iOption < 1 Or $iOption > 4 Then Return SetError(2, 0, 0)
        If IsArray($vValue) Then
            $aValue = $vValue
        Else ; Move the string value to the array
            If $iOption > 2 Then SetError(3, 0, 0)
            $aValue[0] = $vValue
        EndIf
        If Not _AD_ObjectExists($sObject) Then Return SetError(1, 0, 0)
        Local $sProperty = "sAMAccountName"
        If StringMid($sObject, 3, 1) = "=" Then $sProperty = "distinguishedName" ; FQDN provided
        $__oAD_Command.CommandText = "<LDAP://" & $sAD_HostServer & "/" & $sAD_DNSDomain & ">;(" & $sProperty & "=" & $sObject & ");ADsPath;subtree"
        Local $oRecordSet = $__oAD_Command.Execute ; Retrieve the ADsPath for the object
        Local $sLDAPEntry = $oRecordSet.fields(0).Value
        Local $oObject = __AD_ObjGet($sLDAPEntry) ; Retrieve the COM Object for the object
        $oObject.GetInfo
        Switch $iOption
            Case 1
                $oObject.PutEx($ADS_PROPERTY_CLEAR, $sAttribute, 0) ; CLEAR: remove all the property value(s) from the object
            Case 2
                $oObject.PutEx($ADS_PROPERTY_UPDATE, $sAttribute, $aValue) ; UPDATE: replace the current value(s) with the specified value(s)
            Case 3
                $oObject.PutEx($ADS_PROPERTY_APPEND, $sAttribute, $aValue) ; APPEND: append the specified value(s) to the existing values(s)
            Case 4
                $oObject.PutEx($ADS_PROPERTY_DELETE, $sAttribute, $aValue) ; DELETE: delete the specified value(s) from the object
        EndSwitch
        $oObject.SetInfo
        If @error Then Return SetError(@error, 0, 0)
        Return 1
    
    EndFunc
    
    Func GET_MAC($_MACsIP)
        Local $_MAC,$_MACSize
        Local $_MACi,$_MACs,$_MACr,$_MACiIP
        $_MAC = DllStructCreate("byte[6]")
        $_MACSize = DllStructCreate("int")
        DllStructSetData($_MACSize,1,6)
        $_MACr = DllCall ("Ws2_32.dll", "int", "inet_addr", "str", $_MACsIP)
        $_MACiIP = $_MACr[0]
        $_MACr = DllCall ("iphlpapi.dll", "int", "SendARP", "int", $_MACiIP, "int", 0, "ptr", DllStructGetPtr($_MAC), "ptr", DllStructGetPtr($_MACSize))
        $_MACs  = ""
        For $_MACi = 0 To 5
        If $_MACi Then $_MACs = $_MACs & ":"
            $_MACs = $_MACs & Hex(DllStructGetData($_MAC,1,$_MACi+1),2)
        Next
        DllClose($_MAC)
        DllClose($_MACSize)
        Return $_MACs
    EndFunc
    

    Put the code in AutoIt, set the user and password to connect to your active directory, save and convert to exe to use it via GPO.
    Then in Veyon Master set "LDAP Basic" -> "Environment settings" -> "Computer MAC address attribute" enter "networkAddress"

    1 Reply Last reply
    0
    • B Offline
      B Offline
      bekzclz11
      wrote on last edited by
      #2

      Ensure that no changes have been made to this file since it was used to deploy AutoDeploy.

      Be sure to take a backup of the VM content if you are terminating the VM in order to upgrade with a new ISO.

      If AutoDeploy was deployed with HA support, this process terminates both VMs.

      1 Reply Last reply
      0

      Powered by NodeBB | Contributors
      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups