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

Scripts/Batch Discussion :

Chaîne de caractères complexe, voir 2ème message [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Alternant en sécurité informatique
    Inscrit en
    Octobre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Alternant en sécurité informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Chaîne de caractères complexe, voir 2ème message
    Bonjour à tous,

    L'intitulé n'est pas très très clair mais je vais vous exposer mon problème.

    Tout d'abord sachez que je suis plutôt débutant en Powershell mais que je progresse petit à petit.

    Aujourd'hui, je me retrouve face à un problème qui me semble un peu complexe, je m'explique.

    J'ai une table mysql dans laquelle je fais une requête SELECT et qui me retourne actuellement trois lignes dans un tableau en Powershell :

    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
    ### Connection BDD ###
    
    # On charge la DLL pour MysQL
    
    [void] [system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.12\Assemblies\v4.5.2\MySql.Data.dll")
    
    # On positionne les variables de connexions
    
    $serv = "adresserserveur"  
    $port = "3306"  
    $user = "nomdecompte"
    $password = "mdp"
    $db = "basededonnées"
    $auv = "true"
      
    # Création de l'instance, connexion à la base de données 
     
    $mysql = New-Object MySql.Data.MySqlClient.MySqlConnection("server=$serv;port=$port;uid=$user;pwd=$password;database=$db;Allow User Variables=$auv;sslmode=none")  
    $mysql.Open()
    
    # Requête pour insérer dans la base
    
    $reqstr = "
            SELECT concat(DN,';') as DN FROM GROUPE;
    " 
    
    # Création de l'objet contenant la requête
    
    $req = New-Object Mysql.Data.MysqlClient.MySqlCommand($reqstr,$mysql)  
       
    # Création du data adapter et du dataset qui permettront de traiter les données  
    
    $dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($req)  
    $dataSet = New-Object System.Data.DataSet  
    $RecordCount = $dataAdapter.Fill($dataSet,"test")
    
    
    # Affichage du résultat 
     
    $res = $dataSet.Tables["test"]  
    $res | Format-Table  
    
    # Fermeture de la connexion
    
    $Mysql.close()
    $Mysql
    Jusque là, tout va bien et la variable $res me ressort les 3 lignes que je souhaite avec comme séparateur unique un ; pour selon moi faciliter la suite.

    Cependant, je souhaite ensuite lire la première ligne et y appliquer ce code ou quelque chose qui me donne le même résultat, c'est à dire tous les membres d'un groupe AD :

    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
     Function Get-AllgroupandmemberAD {
        param([Parameter(
            Position=0, 
            Mandatory=$true, 
            ValueFromPipeline=$true,
            ValueFromPipelineByPropertyName=$true)]
        [String[]]$SamAccountName)
        
        process 
            {
            foreach($name in $SamAccountName)
                {
                Get-ADGroupMember $name
                Get-ADGroupMember $name | Where-Object {$_.objectClass -eq "group"} | Get-AllgroupandmemberAD 
                }
            }
    }
    
    Get-AllgroupandmemberAD "nomdugroupe" | Select Name | export-csv -NoTypeInformation -Verbose -Encoding UTF8 -path c:\temp\nomdugroupe.csv
    Ce que je souhaite donc c'est qu'aux endroits où il est mis nomdugroupe, ce soit une variable qui porterait le nom de la première ligne lue de ma variable $res et que cette fonction se répète autant de fois qu'il y a de lignes dans $res et que cela sorte évidemment un fichier csv par ligne, celui-ci porterait comme nom : nomdugroupe.csv

    J'espère avoir été assez clair, si jamais n'hésitez pas a me poser des questions !

    Merci d'avance pour votre aide !

    Cordialement,
    Baltha

  2. #2
    Membre à l'essai
    Homme Profil pro
    Alternant en sécurité informatique
    Inscrit en
    Octobre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Alternant en sécurité informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Chaîne de caractères complexe
    UP !

    j'ai réussi à variabiliser ce que je voulais il reste juste un problème dans le nom que j'attribue au fichier Excel.

    En effet, je voulais conserver le nom du DN que j'interroge pour en faire mon nom de fichier mais c'est bien évidemment trop long, certains caractères ne sont pas acceptés et les espaces pareils

    quelqu'un peut donc me dire comment de CN=[O365 BDFR] Microsoft Dynamics CRM Online Professionnel,OU=Dynamics CRM,OU=XXXXX,OU=Utilisateurs,DC=XXXX,DC=XX

    je peux réussir à obtenir ça : MicrosoftDynamicsCRMOnlineProfessionnel

    Sachant que ce chemin change à chaque fois et que la seule chose commune est que la chaîne que caractère que je souhaite obtenir est entre ] et la première virgule, le tout sans espace.

    Cordialement,
    Balthazarr

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut qq chose dans ce genre là :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $s='CN=[O365 BDFR] Microsoft Dynamics CRM Online Professionnel,OU=Dynamics CRM,OU=XXXXX,OU=Utilisateurs,DC=XXXX,DC=XX'
    if ($s -match '^CN=\[O365 BDFR\] (?<DN>.*?),OU=')
     {$Matches.DN -replace ' ',''}
    else { write-error 'Regex à revoir pour '$S'")
    MicrosoftDynamicsCRMOnlineProfessionnel

  4. #4
    Membre à l'essai
    Homme Profil pro
    Alternant en sécurité informatique
    Inscrit en
    Octobre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Alternant en sécurité informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup, c'est parfait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 13/05/2014, 23h05
  2. Mettre à jour plusieurs lignes d'une table
    Par beegees dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2008, 18h09
  3. MAJ de plusieurs lignes d'une table
    Par bencheikh dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/08/2006, 10h47
  4. Mettre a jour plusieurs lignes d'une table
    Par Tartenpion dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/12/2005, 18h50
  5. Procédure stockée - Retourner plusieurs ligne d'une table
    Par ronando dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/11/2005, 13h19

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