Question recuperer vers un fichier l'output de select-strin

Plus d'informations
il y a 12 ans 1 mois #17022 par tacouma
merci pour ton aide, mais je dois avouer que sur la dernière partie je suis largué.

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.

Plus d'informations
il y a 12 ans 1 mois #17023 par Laurent Dardenne
Propose nous un jeux de test de qq lignes et le résultat souhaité, cela facilitera les choses :)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #17025 par tacouma
bon alors je detail plus ce a quoi je veux arriver.
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 \&quot;file\&quot; -force
$string = select-string -path c:\Mytest\script_tsm\dsm.opt -pattern \&quot;exclude.bakup\&quot; -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 \&quot;exclude.bakup\&quot; -allmatches


me renvois un resultat du type :

dsm.opt:1:EXCLUDE.BACKUP \&quot;*:\...\system32\config\...\*\&quot;
dsm.opt:6:EXCLUDE.BACKUP \&quot;*:\...\system32\Perflib*.dat\&quot;


et je souhaiterai que le resultat soit de la forme

EXCLUDE.BACKUP \&quot;*:\...\system32\config\...\*\&quot;
EXCLUDE.BACKUP \&quot;*:\...\system32\Perflib*.dat\&quot;


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.

Plus d'informations
il y a 12 ans 1 mois #17027 par Laurent Dardenne
tacouma écrit:

C'est peut être du au fait que je ne comprends pas encore les implication de ton dernier poste.

Je vais chercher

Le détail de l'exploration :
[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.

Plus d'informations
il y a 12 ans 1 mois #17030 par tacouma
wow, la j'ai du taf :woohoo:
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.

Plus d'informations
il y a 12 ans 1 mois #17031 par Laurent Dardenne
tacouma écrit:

je crois comprendre qu'il faudrait que je passe ma variable $string dans ton bout de code..

Non, il faut adapter le code indiqué après 'finalement' :
[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.

Temps de génération de la page : 0.052 secondes
Propulsé par Kunena