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 :

rechercher chaine de caractere quelque soit la casse


Sujet :

VBScript

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

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Points : 14
    Points
    14
    Par défaut rechercher chaine de caractere quelque soit la casse
    Bonjour,

    Je cherche a remplacer une chaine de caractere connue dans un script.

    Je dois remplacer le homedirectory de pleins de personnes dans notre Active Directory par ce qu'on change nos serveurs de stockage.

    Dans l'AD les utilisateurs avais \\OldServeur\dossier et je dois leur mettre \\Nouveauserveur\dossier.


    Je pensais utiliser ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    (avant ca le script récupère l'info homedirectory pour chaque utilisateur)
     
    chemin = "\\Nouveauserveur"
     
    If InStr(HomeDirectory,chemin) <> 0 Then
     
    HomeDirectory = Replace (HomeDirectory, "\\OldServeur" , "\\Nouveauserveur")
     
    ObjMember.Put "homeDirectory", HomeDirectory
     
    ObjMember.SetInfo
    Mais je viens de me rendre compte que certains utilisateurs ont \\OLDSERVEUR\dossier

    et du coup mon script ne fonctionne pas !

    Help, si vous avez une idée pour me sortir de ce guepier je vous en serais très reconnaissant !

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 078
    Points : 17 118
    Points
    17 118
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HomeDirectory = Replace(HomeDirectory, "\\OldServeur", "\\Nouveauserveur")
    HomeDirectory = Replace(HomeDirectory, "\\OLDSERVEUR", "\\Nouveauserveur")
    Il suffit de mettre autant de Replace que d'occurrence possible.
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    aie, parcequ'en fait ce n'est qu'un exemple

    l'arborescence a remplacer est beaucoup plus longue et il y a des combinaisons de Casse qui me sont inconnu :\

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 078
    Points : 17 118
    Points
    17 118
    Par défaut
    Le mot est il toujours OLDSERVEUR quelque soit les majuscules ou minuscules ?
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    oui c'est bien ca.

    en fait le home directory c'est un lecteur réseau qui est crée quand les utilisateurs se loguent

    exemple: lecteur U: \\Oldserveur\stockageperso\%username%

    nous mettons en place un nouveau serveur, il faut donc que je change dans l'active directory

    \\Oldserveur par le nom du nouveau serveur.

    Windows se fiche de la casse, donc dans l'AD on as un peu de tout...
    Ca aété au bon vouloir de la personne qui a crée le compte

  6. #6
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 078
    Points : 17 118
    Points
    17 118
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim HomeDirectory
     
    HomeDirectory = "\\OldServeur\dossier"
    HomeDirectory = Replace(UCase(HomeDirectory), "\\OLDSERVEUR", "\\Nouveauserveur")
    msgbox HomeDirectory
    Code vérifier
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Excellent !!

    Ca marche nickel

    J'ai encore du chemin à faire ne programmation lol !

    Avec cette migration j'ai du m'y coller a fond, mon script de migration en ferai rire plus d'un je pense.

    me voilà débloquer je vais pouvoir attaquer la suite,

    merci beacoup

  8. #8
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 078
    Points : 17 118
    Points
    17 118
    Par défaut
    Zut

    Replace(UCase(HomeDirectory), fait passer en majuscule tout le texte sauf le remplacement.

    J'ai me semble t il mieux vérifié avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim HomeDirectory
    Dim Deb, Fin, Entete, Suite, NameNewServer
     
    HomeDirectory = "U:\\Oldserveur\stockageperso\%username%"
    NameNewServer = "Nouveauserveur"
     
    Deb = InStr(1, HomeDirectory, "\\", vbTextCompare)
    Entete = Left(HomeDirectory, Deb + 1)
    Fin = InStr(Len(Entete) + 1, HomeDirectory, "\", vbTextCompare)
    Suite = Right(HomeDirectory, Len(HomeDirectory) - (Fin - 1))
     
    HomeDirectory = Entete & "Nouveauserveur" & Suite
    MsgBox HomeDirectory
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Merci encore ^^

    En fait la casse d'arrivée ne m'importe pas étant donné que windows se fiche de la casse pour monter ce lecteur.

    et je dois avouer que ce code me donne mal au crane (il m'en faut peu ^^)


    Si vous voulez rigoler un peu voici mon script complet. (ou si un jour quelqu'un a besoin qui sait ^^)

    il ya a plein de lignes inutiles qui viennent des autres codes que j'ai trouvé
    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
    Dim ObjWb 
    Dim zz 
    Set objRoot = GetObject("LDAP://RootDSE") 
    strDNC = objRoot.Get("DefaultNamingContext") 
    Set objDomain = GetObject("LDAP://" & strDNC) ' Bind to the top of the Domain using LDAP using ROotDSE 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    set Fso = objFSO.OpenTextFile("output.txt", 2, True) 
    Fso.WriteLine("SamAccountName,CN,HomeDirectory")
    Call enummembers(objDomain) 
    Sub enumMembers(objDomain) 
    On Error Resume Next 
     
    chemin = "C:\USERS\ADMINISTRATOR\DESKTOP\"  'référence à chercher dans les utilisateurs pour savoir si ils sont concernés par la migration
     
    For Each objMember In objDomain ' go through the collection 
     
    If ObjMember.Class = "user" Then ' if not User object, move on. 
     
    ClassName = objMember.Class 
    SamAccountName = ObjMember.samAccountName 
    Cn = ObjMember.CN 
    FirstName = objMember.GivenName 
    LastName = objMember.sn 
    initials = objMember.initials 
    Descrip = objMember.description 
    Office = objMember.physicalDeliveryOfficeName 
    Telephone = objMember.telephonenumber 
    EmailAddr = objMember.mail 
    WebPage = objMember.wwwHomePage 
    Addr1 = objMember.streetAddress 
    City = objMember.l 
    State = objMember.st 
    ZipCode = objMember.postalCode 
    Title = ObjMember.Title 
    Department = objMember.Department 
    Company = objMember.Company 
    Manager = ObjMember.Manager 
    Profile = objMember.profilePath 
    LoginScript = objMember.scriptpath 
    HomeDirectory = ObjMember.HomeDirectory 
    HomeDrive = ObjMember.homeDrive 
    AdsPath = Objmember.Adspath 
    LastLogin = objMember.LastLogin 
     
     
    noCaseHomedir = UCase(HomeDirectory) 'home directory en majuscule pour éviter les problemes
     
    Fso.WriteLine(SamAccountName & "," & CN & "," & noCaseHomedir) 'j'écris ces valeur dans un fichier texte pour savoir ou j en suis je garde cettte ligne sous la main
     
    If InStr(noCaseHomedir,chemin) <> 0 Then 'cherche une occurence du chemin de référence, si ce chemin est trouvé ca veux dire que l utilisateur est concerné par la migration
     
    HomeDirectory = Replace (LCase(HomeDirectory), "c:\users\administrator\desktop" , "C:\test") 'je remplace l'ancien chemin par le nouveau ici c:\test
     
    ObjMember.Put "homeDirectory", HomeDirectory 'injection dans l active directory
     
    ObjMember.SetInfo 'on applique
     
    End If
    ' Blank out Variables in case the next object doesn't have a value for the property 
    SamAccountName = "-" 
    Cn = "-" 
    FirstName = "-" 
    LastName = "-" 
    initials = "-" 
    Descrip = "-" 
    Office = "-" 
    Telephone = "-" 
    EmailAddr = "-" 
    WebPage = "-" 
    Addr1 = "-" 
    City = "-" 
    State = "-" 
    ZipCode = "-" 
    Title = "-" 
    Department = "-" 
    Company = "-" 
    Manager = "-" 
    Profile = "-" 
    LoginScript = "-" 
    HomeDirectory = "-" 
    HomeDrive = "-" 
    Primary = "-" 
    For ll = 1 To 20 
    Secondary(ll) = "" 
    Next 
       End If 
     
       ' If the AD enumeration runs into an OU object, call the Sub again to itinerate 
     
       If objMember.Class = "organizationalUnit" or OBjMember.Class = "container" Then 
           enumMembers (objMember) 
       End If 
    Next 
    End Sub 
     
    MsgBox "Done" ' show that script is complete

Discussions similaires

  1. [Batch] Recherche chaine de caractere dans spool puis passage en variable VRAI/FAUX
    Par calamarz dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 09/04/2009, 15h50
  2. Recherche chaine de caracteres W2K3 server
    Par jujulev dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 02/07/2008, 10h10
  3. recherche chaine de caractere
    Par adriantox dans le forum VBScript
    Réponses: 6
    Dernier message: 22/11/2007, 15h54
  4. recherche chaine de caractere ne marche pas !!
    Par lobiman dans le forum Langage
    Réponses: 1
    Dernier message: 24/08/2006, 11h55
  5. Recherche chaine de caractere
    Par fantomchris dans le forum C
    Réponses: 11
    Dernier message: 08/01/2006, 15h52

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