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 :

Gestion de "spécial char" dans une string: Invoke-Expression [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Points : 877
    Points
    877
    Par défaut Gestion de "spécial char" dans une string: Invoke-Expression
    Bonjour a tous,

    je bute depuis plus de 24H sur un truc tout bete mais qui commence a me rendre fou, je m'explique:

    J'ai un code fonctionnel qui me permet de lancer une commande via
    invoke-expression
    la chaine de caractere est contituée de plusieurs élément dont un path récupéré dans une clé de registre (parc hétérogene).

    Le soucis c'est qu'à présent la chaine contient des espaces et des "(" ce qui semble poser probleme.

    J'ai testé pas mal de chose et songe a un systeme d'encodage ou quelques chose comme ça mais si je pouvais éviter cela m'arrangerais vraiment et je suis persuadé que c'est tout a fait réalisable sans mais COMMENT ??

    Code fonctionnel:
    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
    $RegValue                =get-itemproperty -path registry::"HKEY_LOCAL_MACHINE\SOFTWARE\woot\Creations\DIR";
    $Reg                     =(($RegValue.'0010_REPERTOIRE_CREATIONS')+("\ZIMP\"));
    [string]$SourceFilex64   =($Reg+"hpcpu118.cfg ");
    [string]$psexec          =($Reg+"psexec.exe ");
    [string]$Argumentsx64    =($psexec+'/acceptEula -s -e cmd.exe /c copy /Y '+ $SourceFilex64 +'C:\Windows\System32\DriverStore\FileRepository\hpcu118t.inf_amd64_neutral_50868a4c1635292b\ 2>$null');
    
    $list=@($Argumentsx64,$ArgumentsBisx64);
    
    foreach($Todo in $list){
    $Command =($psexec+$Todo);
    
        try{
            IeX -Command ($Command) -WarningAction SilentlyContinue| Out-Null;
        }catch{};
    }
    Code avec le chemin posant soucis:
    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
    $RegValue                =get-itemproperty -path registry::"HKEY_LOCAL_MACHINE\SOFTWARE\woot\Creations\DIR";
    $Reg                     =(($RegValue.'0010_REPERTOIRE_CREATIONS')+("\ZIMP (Flora - Imprimantes)\"));
    [string]$SourceFilex64   =($Reg+"hpcpu118.cfg ");
    [string]$psexec          =($Reg+"psexec.exe ");
    [string]$Argumentsx64    =($psexec+'/acceptEula -s -e cmd.exe /c copy /Y '+ $SourceFilex64 +'C:\Windows\System32\DriverStore\FileRepository\hpcu118t.inf_amd64_neutral_50868a4c1635292b\ 2>$null');
    
    $list=@($Argumentsx64,$ArgumentsBisx64);
    
    foreach($Todo in $list){
    $Command =($psexec+$Todo);
    
        try{
            IeX -Command ($Command) -WarningAction SilentlyContinue| Out-Null;
        }catch{};
    }
    Erreur renvoyée:
    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
    The term 'C:\Temp\Srv_020' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path
     was included, verify that the path is correct and try again.
    At line:1 char:16
    + C:\Temp\Srv_020 <<<< (creations)psexec.exe /acceptEula -s -e cmd.exe /c copy /Y C:\Temp\Srv_020(creations)hpcpu118.cfg C:\Windows\System32\DriverStore\FileR
    epository\hpcu118t.inf_amd64_neutral_50868a4c1635292b\
        + CategoryInfo          : ObjectNotFound: (C:\Temp\Srv_020:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
     
    The term 'C:\Temp\Srv_020' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path
     was included, verify that the path is correct and try again.
    At line:1 char:16
    + C:\Temp\Srv_020 <<<< (creations)psexec.exe /acceptEula -s -e cmd.exe /c copy /Y C:\Temp\Srv_020(creations)hpcpu118.cfg C:\Windows\System32\spool\drivers\x64
    \3\
        + CategoryInfo          : ObjectNotFound: (C:\Temp\Srv_020:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    Si quelqu'un pouvait m'y aider .. J'aime bie nme prendre la tete sur ce genre de chose mais la j'ai une grosse contrainte de temps et donc sucite votre aide a tous , merci.

    PS: la clé renvois ce chemin (au cas ou) :
    C:\temp\Srv_020(creations)

  2. #2
    Membre éclairé Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Points : 877
    Points
    877
    Par défaut
    Petite réponse a moi-meme ou plus sérieusement a ceux qui pourraient avoir ce type de problèmes:

    Il apparait que les "( )" soient mal gérées dans ce type de contexte , voici la solution que j'ai trouvé (non sans mal) :

    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
    $RegValue   =get-itemproperty -path registry::"HKEY_LOCAL_MACHINE\SOFTWARE\woot\Creations\DIR";
    $Reg        =(($RegValue.'0010_REPERTOIRE_CREATIONS')+("\ZIMP\"));
    $NewReg     = $Reg.Replace("(","`"(`"")
    $NewReg     = $NewReg.Replace(")","`")`"")
    [string]$SourceFilex64   =($NewReg+"hpcpu118.cfg ");
    [string]$psexec          =($NewReg+"psexec.exe") ;
    
    
    [string]$Argumentsx64    =(" -acceptEula -s -e cmd.exe /c copy /Y "+ $SourceFilex64 +"C:\Windows\System32\DriverStore\FileRepository\hpcu118t.inf_amd64_neutral_50868a4c1635292b\");
    [string]$ArgumentsBisx64 =(" -acceptEula -s -e cmd.exe /c copy /Y "+ $SourceFilex64 +"C:\Windows\System32\spool\drivers\x64\3\");
    
    
    $list =@($Argumentsx64,$ArgumentsBisx64);
    
    foreach($Todo in $list){
        try{
            $command=($psexec+$Todo);
            IeX -Command ($command) -WarningAction SilentlyContinue 2>$NULL;
        }catch{};
    }
    Voila, probleme résolu ;-)

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

Discussions similaires

  1. La gestion de la session de persistence dans une application web
    Par djo.mos dans le forum Développement Web en Java
    Réponses: 17
    Dernier message: 18/02/2009, 14h35
  2. Gestion d'un item se trouvant dans une info-bulle
    Par Viscapon dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 12/05/2008, 16h09
  3. copier un char dans une string
    Par lezurp dans le forum C++
    Réponses: 6
    Dernier message: 26/03/2008, 16h43
  4. Tableau de char[] passé dans une fonction
    Par Joratois dans le forum C
    Réponses: 26
    Dernier message: 07/06/2007, 15h06

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