Question Chercher un bloc dans un fichier

Plus d'informations
il y a 7 mois 4 semaines #29510 par Rahier
Bonjour à tout le monde,

J'ai une liste de logs au fortmat txt. Chaque log correspond à la création d'un profil d'un utilisateur.

La pièce jointe johndoe_IDT01049_Login.txt est absente ou indisponible



Ce fichier contient beaucoup mais souhaiterais exclusivement extraire ce qu'il y a entre
[code:1]Status Local Remote Network

[/code:1] et

The command completed successfully.


idéalement, stocker le tout dans un autre fichier j'ai plus de 1100 fichiers à parcourir.

Pourriez-vous m'aider ? Je suis perdu, je ne sais pas comment m'y prendre :-(

Merci d'avance,

Christophe
Pièces jointes :

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

Plus d'informations
il y a 7 mois 4 semaines #29511 par Laurent Dardenne
Salut,
inspire toi de ce code qui supprime une signature d'un script:
[code:1]
#Remove-AuthenticodeSignature.ps1
Filter Remove-AuthenticodeSignature{
#([Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding] $Encoding=\"ASCII\"«»)


function Parse([String] $FileName)
{ #renvoi toutes les lignes sauf celles du bloc de signature
$isSignatureBloc=$False
Get-Content -Path $FileName|
Foreach-Object {
switch ($_)
{
\"# SIG # Begin signature block\" {$isSignatureBloc=$True;continue}
\"# SIG # End signature block\" {$isSignatureBloc=$False;Continue}

default {
if ($isSignatureBloc -eq $false)
#On traite les lignes qui ne se trouvent pas dans le bloc de signature
{$_}
}#default
}#Switch
}#Foreach
}#Parse

if ($_ )
{
#Récupére un nom de fichier créé par l'OS
$TempFile = [IO.Path]::GetTempFileName()
$FullPath=Resolve-Path \"$_\"
Write-Debug \"$TempFile\"
Write-Debug \"$FullPath\"


#Extrait toutes les lignes sauf la signature dans un fichier temporaire
Parse \"$FullPath\"|Set-Content \"$TempFile\"

#Ecrase le fichier d'origine à partir du fichier temporaire
#$FileInfo.Replace ne fonctionne pas car %Temp%
#peut être sur un disque différent de celui de la source :/
Get-Content \"$TempFile\"|Set-Content \"$FullPath\"
Remove-Item \"$TempFile\"
}
else {Write-Error \"[Remove-AuthenticodeSignature] Ce filtre a reçu une donnée `$null du pipeline.\"}
}
[/code:1]
Il te faut changer le contenu des chaines du switch avec tes valeur de début et celle de fin.

Tutoriels PowerShell

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

Plus d'informations
il y a 7 mois 4 semaines #29514 par Rahier
Réponse de Rahier sur le sujet Re:Chercher un bloc dans un fichier
Salut,

Merci beaucoup, je vais lire cela attentivement !

Christophe

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

Plus d'informations
il y a 7 mois 3 semaines #29530 par crahier
Réponse de crahier sur le sujet Re:Chercher un bloc dans un fichier
Bonjour,

Désolé, j'ai du recréer un nouveau compte, je ne me rappelle pas mes codes.

Concernant l'exemple, comment doit-on utiliser ce \"Filter\" au début du script ?

Je ne peux pas appeler directement ?

[code:1]Filter Remove-AuthenticodeSignature{}[/code:1]

Merci pour vos lumières !!!

Christophe

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

Plus d'informations
il y a 7 mois 3 semaines #29531 par Troxsa
Réponse de Troxsa sur le sujet Re:Chercher un bloc dans un fichier
Moi j'ai deja fait un truc dans le style et j'ai fait plus ou moins comme ça :

[code:1]$fichier = Get-Content \".\fichier.txt\" -Encoding Default

$result = $fichier | Select-String -Pattern \"--+.\",\"^The command completed successfully.$\"
$result

Foreach($item in $result)
{
if($item.Line -match \"--+.\"«»)
{
$Header = $item.LineNumber - 3 # Header
continue
}
$fichier[($Header)..($item.LineNumber-2)]
}[/code:1]

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

Plus d'informations
il y a 7 mois 3 semaines #29532 par crahier
Réponse de crahier sur le sujet Re:Chercher un bloc dans un fichier
Bonjour,

Ah oui, c'est une autre approche !

C'est génial, je viens de tester, le résultat est parfait.

Une dernière petite chose, comment puis-je sauver le résultat ?

J'ai rajouté une [code:1]Set-Content \"c:\temp\essai3.txt\" -Value $result[/code:1] comme dernière ligne du script mais le contenu est alors [code:1]
The command completed successfully.
The command completed successfully.
[/code:1]

J'ai dû louper quelque chose, mais je ne vois pas quoi :-(

Merci à nouveau !

Christophe

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

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