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 :

Echapper un satané $ dans un string [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 146
    Points : 100
    Points
    100
    Par défaut Echapper un satané $ dans un string
    Bonjour,

    Pas la peine de me rediriger vers google car j'ai déjà regardé et dans mon problème quelque chose m'échappe.

    J'ai un fichier de compteurs perfmon que je veux parser et faire des -replace pour utiliser un template sans le modifier pour en générer un autre temporaire.

    les chaines sont de ce type:
    \\MyServer\MSSQL$MyInstance:Cursor Manager by Type(_Total)\Cursor Requests/sec

    voici un jeu de test que j'ai créé pour l'occasion avec un fichier texte contenant notamment une ligne avec \\tutu$hoho.

    J'exécute le code suivant pour mon test de parsing:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #Get the template and parse it
    $ServerInstance= "localhost"
    $PerfCounters = Get-Content -Path 'D:\Scripts\SQL_Scripts\Toolkit_Audit\test.txt'
    
    foreach ($PerfCounterChange in $PerfCounters)
    {
    $PerfCounterChange -replace ("\\tutu$hoho", "\$ServerInstance")
    }
    $PerfCounterChange
    Je veux remplacer \\tutu$hoho par une autre valeur ici $ServerInstance hors il m'est impossible d'échapper ce satané $. J'ai essayé string '' ou "" ou `$ mais rien a faire ... Je pète un plomb lol, est-ce que quelqu'un à une idée ?

  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
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    je ne sais pas trop si tu veux construire ta regex en voulant en substituer une partie avant l'exécution de l'opérateur ou si c'est une chaine littérale.
    Une proposition :
    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
    $ServerInstance= "localhost"
    @'
    un
     \\tutu$hoho
    deux
    '@ > 'c:\temp\test.txt'
    
    foreach ($PerfCounterChange in Get-Content -Path 'c:\temp\test.txt')
    {
      $PerfCounterChange -replace '\\tutu\$hoho', "\$ServerInstance"
    }
    
    #un
    # \\localhost
    #deux
    Certains métacaractères doivent être échappés, par exemple '\' et '$'

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 146
    Points : 100
    Points
    100
    Par défaut
    Bonjour Laurent et merci pour ta réponse.

    Ça fonctionne maintenant. Je voulais faire une chaine littérale.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/10/2005, 17h05
  2. retour chariot dans un string
    Par bono dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/12/2003, 12h17
  3. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 16h26
  4. Recherche d'un String dans un String ?
    Par apen2k2 dans le forum Langage
    Réponses: 9
    Dernier message: 14/04/2003, 11h08
  5. Centrer un texte dans un string Grid
    Par christine dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/10/2002, 22h33

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