Question
recuperer vers un fichier l'output de select-strin
- tacouma
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
sinon j'ai testé et le résultat n'est pas bon, le fichier de sortie reste désespérément vide. C'est peut etre du au fait que je ne comprends pas encore les implication de ton dernier poste.
Je vais chercher<br><br>Message édité par: tacouma, à: 18/02/14 09:44
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- tacouma
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Je dois creer un fichier dans lequel je dois copier les données d'un premier fichier d'ou pour le moment j'ai cela :
new-item c:\Mytest'\script_tsm'\sortie.txt -type \"file\" -force
$string = select-string -path c:\Mytest\script_tsm\dsm.opt -pattern \"exclude.bakup\" -allmatches
$string | add-content -path C:\Mytest\script_tsm\sortie.txt
J'ai pris add-content a la place de set-content car je ne cherche pas a remplacer un contenu mais à ajouter le contenu de string a un fichier.
actuellement la ligne
select-string -path .\dsm.opt -pattern \"exclude.bakup\" -allmatches
me renvois un resultat du type :
dsm.opt:1:EXCLUDE.BACKUP \"*:\...\system32\config\...\*\"
dsm.opt:6:EXCLUDE.BACKUP \"*:\...\system32\Perflib*.dat\"
et je souhaiterai que le resultat soit de la forme
EXCLUDE.BACKUP \"*:\...\system32\config\...\*\"
EXCLUDE.BACKUP \"*:\...\system32\Perflib*.dat\"
Message édité par: tacouma, à: 18/02/14 10:28<br><br>Message édité par: tacouma, à: 18/02/14 10:37
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Le détail de l'exploration :C'est peut être du au fait que je ne comprends pas encore les implication de ton dernier poste.
Je vais chercher
[code:1]
$t=@(
'dsm.opt:1:EXCLUDE.BACKUP *:\...\system32\config\...\*',
'dsm.opt:6:EXCLUDE.BACKUP *:\...\system32\Perflib*.dat',
'dsm.opt:22:EXCLUDE.BACKUP *:\...\system32\Perflib*.dat',
'dsm.opt:422:EXCLUDE.BACKUP *:\...\system32\Perflib*.dat',
'dsm.opt:10422:EXCLUDE.BACKUP *:\...\system32\Perflib*.dat'
)
$Result=$T | Select-string -Pattern '^dsm.opt:\d{1,}:«»(.*)'
$Result.Gettype()
$Result.Count
$Result[0]|Get-member
$Result[0]|Select *
,$Result[0].Matches.Gettype()
#Sur l'usage de la virgule voir ce post :
# www.via-powershell.fr/index.php/2014/01/...mment-les-identifier
$Result[0].Matches.Count
,$Result[0].Matches[0].Gettype()
$Result[0].Matches[0]|Select *
,$Result[0].Matches[0].Groups.Gettype()
,$Result[0].Matches[0].Groups.Count
$Result[0].Matches[0].Groups[0]|Select *
#0 = ligne complète
$Result[0].Matches[0].Groups[0].Value
#1 = groupe regex (.*)
$Result[0].Matches[0].Groups[1].Value
$Result|Foreach {$_.Matches[0].groups[1].value}|
Add-content C:\temp\result.txt
Type C:\temp\result.txt
#Finalement
Get-Content $Fichier|
Select-string -Pattern '^dsm.opt:\d{1,}:«»(.*)'|
Foreach {$_.Matches[0].Groups[1].value}|
Add-content C:\temp\result.txt
[/code:1]
Il te manquait la regex pour analyser et extraire la partie désirée et l'extraction du résultat à partir de objets renvoyés par Select-String.<br><br>Message édité par: Laurent Dardenne, à: 18/02/14 12:51
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- tacouma
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Mais bon je comprends un peu mieux la structure que tu m'indique. Au vu de mon cas de figure, je crois comprendre qu'il faudrait que je passe ma variable $string dans ton bout de code ce qui donnerai
dans l'intégralité pour cette partie du traitement quelque chose du type :
[code:1]$string = select-string -path C:\Mytest\script_tsm\dsm.opt -pattern 'exclude.bakup' -allmatches
$Result=$string | select-string -Pattern '^dsm.opt:\d{1,}: (.*)'
$Result.Gettype()
$Result.Count
$Result[0]|Get-member
$Result[0]|Select *
,$Result[0].Matches.Gettype()
$Result[0].Matches.Count
,$Result[0].Matches[0].Gettype()
$Result[0].Matches[0]|Select *
,$Result[0].Matches[0].Groups.Gettype()
,$Result[0].Matches[0].Groups.Count
$Result[0].Matches[0].Groups[0]|Select *
#0 = ligne complète
$Result[0].Matches[0].Groups[0].Value
#1 = groupe regex (.*)
$Result[0].Matches[0].Groups[1].Value
$Result|Foreach {$_.Matches[0].groups[1].value}| Add-content C:\temp\result.txt
Type C:\temp\result.txt
#Finalement
Get-Content $Fichier|
Select-string -Pattern '^dsm.opt:\d{1,}: (.*)'|
Foreach {$_.Matches[0].Groups[1].value}| Add-content C:\temp\result.txt [/code:1] <br><br>Message édité par: tacouma, à: 18/02/14 16:11
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Non, il faut adapter le code indiqué après 'finalement' :je crois comprendre qu'il faudrait que je passe ma variable $string dans ton bout de code..
[code:1]
Select-String -Path C:\Mytest\script_tsm\dsm.opt -Pattern '^dsm.opt:\d{1,}: (.*)' -AllMatches|
Foreach {$_.Matches[0].Groups[1].value}|
Add-content C:\temp\result.txt
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- recuperer vers un fichier l'output de select-strin