IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

suppression de compte AD


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 12
    Points
    12
    Par défaut suppression de compte AD
    Hello

    J'aimerai faire un script qui supprimer les comptes inactifs depuis 3 mois.

    Une idée svp ?

  2. #2
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Bon alors je te prévient, j'ai fait ce code il y a quelques temps, et j'avais pas mal souffert! Mais tu n'a pas besoin de tout! il te suffit de prendre que ce dont tu as besoin. Ce code affiche une page web pour t'informer des éléments en cours de traitement, et quand le script est fini.

    Cadeau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    ' Script de récupération du dernier logon supérieur à 60 jours
    ' MP le 26/07/07
    ' Utilise la propriété LastLogonTimestamp (répliquée sur les DC)
    ' Renvoie Never si jamais connecté
    ' La valeur du nombre de jour d'expiration est à paramétrer ligne 66 : If DaysValue >= 60
     
    Const ForAppending = 8
     
    Domain="integr"
    strDC ="ms-integr05"
     
    On Error Resume Next
     
    date2 = Replace(Date, "/", "-")
    'wscript.echo date2
    Result_file = "C:\UserExpired-60-" & date2 & ".csv"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.CreateTextFile(Result_file)
    objFile.close
    Set objTextFile = objFSO.OpenTextFile(Result_file, ForAppending, True)
     
    Set objExplorer = CreateObject("InternetExplorer.Application")
    objExplorer.Navigate "about:blank"
    objExplorer.ToolBar = 0
    objExplorer.StatusBar = 0
    objExplorer.Width = 400
    objExplorer.Height = 600
    objExplorer.Left = 0
    objExplorer.Top = 0
    objExplorer.Visible = 1
     
    Do While (objExplorer.Busy)
    Loop
     
    Set objDocument = objExplorer.Document
    objDocument.Open
    objDocument.Writeln "<html><head><title>Audit des comptes</title></head>"
    objDocument.Writeln "<body bgcolor='white'>"
     
    Set oDomain = GetObject("WinNT://" & Domain)
    oDomain.Filter = Array("User")
    objDocument.Writeln "Derniere connexion des comptes au domaine " & oDomain.Name & "<br>"
    objTextFile.write "Login;Nom;Direction;DN;Dernier Login;Nombre de jours;A désactiver;Commentaire" & vbCRLF
     
    Set oRootDSE = GetObject("LDAP://RootDSE")
    Set oShell = WScript.CreateObject("WScript.Shell")
     
    For Each oDItem In oDomain
    	'wscript.echo oDItem.name
    	Err.Clear
            sUserName = oDItem.name
            Set oUser = GetObject("LDAP://" & GetoUser(sUserName))
            DNUser = oUser.distinguishedName
            'On ignore les comptes pour Citrix
            if lcase(instr(1, DNUser, "Architecture Citrix", 1)) = 0 then
                    'On ignore les comptes déjà désactivés
                    if oUser.AccountDisabled = FALSE then
                            Set objLastLogon = oUser.Get("lastLogonTimestamp")
                            intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
                            intLastLogonTime = intLastLogonTime / (60 * 10000000)
                            intLastLogonTime = intLastLogonTime / 1440
                            'Wscript.Echo "User: " & sUserName & " Last logon time: " & intLastLogonTime + #1/1/1601#
                            If Err.Number = 0 Then
    	                       realLastLogonTime = intLastLogonTime + #1/1/1601#
    	                       LastLogonDate = Split(realLastLogonTime)
    	                       'Wscript.Echo "Date : " & LastLogonDate(0)
    	                       DaysValue = DateDiff("d", LastLogonDate(0), Date)
    	                       OUDirect = split(DNUser, ",", -1, 1)
    	                       Direction = split(OUDirect(1), "=", -1, 1)
                                   'Wscript.Echo "Jours : " & DaysValue
    	                       If DaysValue >= 60 Then objTextFile.write sUserName & ";" & oUser.CN & ";" & Direction(1) &";" & oUser.distinguishedName & ";" & realLastLogonTime & ";" & DaysValue & ";true;Désactivé le " & Date & " par ARS" & vbCRLF
                            End If
                    End If
            End If
            objDocument.Writeln sUserName & " audité" & "<br>"
    Next
    objTextFile.close
    liste.close
     
    '############################################################
    ' Fonction GetoUser
     
    Function GetoUser(ByVal LogonAccount)
    Const ADS_PROPERTY_CLEAR = 1
    Const ADS_NAME_INITTYPE_GC = 3
    Const ADS_NAME_TYPE_NT4 = 3
    Const ADS_NAME_TYPE_1779 = 1
    ' Determine le nom DNS du domain depuis l'objet RootDSE.
    strDNSDomain = oRootDSE.Get("defaultNamingContext")
     
    ' utilise l'objet NameTranslate pour trouver le nom netbios du domaine depuis le nom dns
    Set objTrans = CreateObject("NameTranslate")
    objTrans.Init ADS_NAME_INITTYPE_GC, ""
    objTrans.Set ADS_NAME_TYPE_1779, strDNSDomain
    strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)
    ' suprime le dernier antislash
    strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)
      strUserNTName = Trim(LogonAccount)
      ' utilise l'objet NameTranslate pour convertire le nom NT en Chaine LDAP.
      'On Error Resume Next
      objTrans.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strUserNTName
      If Err.Number <> 0 Then
        On Error GoTo 0
        Wscript.Echo "ERROR: Login not found in Active Directory: " & strUserNTName
      Else
      On Error GoTo 0
     
      strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
     
        'On Error Resume Next
        GetoUser = strUserDN
      End If
    End Function
    '#################################################################
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

Discussions similaires

  1. probleme suppression du compte root
    Par moulefrite dans le forum Installation
    Réponses: 14
    Dernier message: 05/06/2009, 17h39
  2. Réponses: 1
    Dernier message: 23/05/2006, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo