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 :

Powershell et chaines de caracteres


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de cubepiege
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 161
    Par défaut Powershell et chaines de caracteres
    Bonjour, je cherche depuis un moment comment utiliser à l'interieur d'une chaine de caractères une série de 3 caractères en powershell, n'importe lesquels.

    Par exemple j'appel une fonction avec 1 argument:

    fonction1 toto_..._titi

    en gros je veux que mes 3 '.' représentent n'importe quels 3 caractères.
    J'ai essayé toto_"..."_titi mais ça ne fonctionne pas. je suppose qu'il faut se tourner vers les expressions régulières. Avez vous une idée pour faire çà svp ?

    Merci

  2. #2
    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
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par cubepiege Voir le message
    je suppose qu'il faut se tourner vers les expressions régulières.
    C'est une possibilité.
    Citation Envoyé par cubepiege Voir le message
    Avez vous une idée pour faire çà svp ?
    Il faut déjà savoir où rechercher ces trois caractères. Ton exemple est simple 'toto_..._titi', ici le délimiteur est le caractère '_'.
    Est-ce que ce sera tjr le cas ?
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $s='toto_123_titi'
    $s -match '_(?<Extraction>.{3})_'
    #True
    $Matches
    # Name                           Value
    # ----                           -----
    # Extraction                     123
    # 0                              _123_
    $Matches.Extraction
    #123
    #

  3. #3
    Membre confirmé Avatar de cubepiege
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 161
    Par défaut
    Bonjour, merci pour cette proposition.
    pour situer le contexte, la fonction recherche un groupe dans un AD.

    Je demande à la fonction de trouver un ou des groupes groupe ad toto_..._titi, c'est un groupe préfixé et suffixé par toto_ et titi_ et qui peut contenir au milieu un chaîne caractère n'importe laquelle uniquement sur 3 caractères.

    D'où l'appel : fonction1 toto_..._titi

  4. #4
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cubepiege Voir le message
    D'où l'appel : fonction1 toto_..._titi
    Dans ce cas voici une ébauche fonctionnelle :
    Code Powershell : 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
     
    Function Split-ADGroupName{
     param(
      [string] $InputObject,
      [string] $Prefixe,
      [string] $Suffixe
     )
        #Echappe les métacaractéres d'une chaîne considérée comme ancre dand une regex
      $EscapedPrefix=[Regex]::Escape($Prefixe)
      $EscapedSuffix=[Regex]::Escape($Suffixe)
     
       #Partie recherchée
      $Pattern='(?<GroupName>.{3})'
     
       #Construit la regex 
      $RegEx='{0}{1}{2}' -F $EscapedPrefix,$Pattern,$EscapedSuffix
     
      if ($InputObject -match $RegEx)
      { 
        Write-Verbose "Split-ADGroupName : '$InputObject' match '$Regex'"
        $Matches.GroupName 
      }
      else { Write-Verbose "Split-ADGroupName : '$InputObject' not match '$Regex'"}
    }#Split-ADGroupName
     
    $VerbosePreference='Continue'
      $s='toto_123_titi'
      Split-ADGroupName $S
      Split-ADGroupName $S -Prefixe 'toto_' -Suffixe '_titi'
      $s='toto_12_titi'
      Split-ADGroupName $S -Prefixe 'toto_' -Suffixe '_titi'
      $s='toto'
      Split-ADGroupName $S -Prefixe 'toto_' -Suffixe '_titi'
      $s='toto.123.titi'
      Split-ADGroupName $S -Prefixe 'toto.' -Suffixe '.titi'
    $VerbosePreference='SilentlyContinue'
    Reste à tester et à compléter la fonction si besoin: pipeline, contrainte de paramètre, règles de gestion, doc,...

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Réponses: 13
    Dernier message: 13/06/2003, 14h13
  3. Pb Update avec chaine de caractere
    Par JuJu° dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2003, 15h58
  4. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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