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 :

recuperation de log depuis un xml séréalisé [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut recuperation de log depuis un xml séréalisé
    Bonjour,

    Je dois pour mon employeur créé un script Powershell qui lui permettrait de voir l'avancé d'une sauvegarde acronis v10 sur le Shell de Windows serveur 2003 donc V1. (inutile de me poser la question je n'en vois pas l'utilité....)

    Donc acronis génère un fichier xml sérialisé que windows ne reconnait pas. Mais il est toujours possible de l'ouvrir en tant que txt. Cela rend un code comme suis :

    Nom : test.png
Affichages : 798
Taille : 102,6 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    8  <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688820
    		</Time>
    		<Code>
    			11863307
    		</Code>
    		<Severity>
    			2
    		</Severity>
    Je ne vous met pas tous le code c'est très long mais j'ai reperer les lignes interressante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Category>
    			1
    	</Category>
    	<Message>
    			Task 'Simple backup' succeeded.
    	</Message>
    Il n'y a pas d'autre valeur qui se nomme : Category ou Message.

    Il y aurait un moyen de prélever ses données ? Normalement oui, j'ai essyer le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    findstr /M /I "Category" *.* > result.txt
    cat result.txt
    Mais cela va de soit que sa ne marche pas ^^.

    J'aimerais votre avis sur la question, merci

  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,
    Citation Envoyé par Fabi3n Voir le message
    J'aimerais votre avis sur la question, merci
    Ici :
    Citation Envoyé par Fabi3n Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    8  <?xml version="1.0" encoding="UTF-8" ?>
    il me semble que ton problème de lecture est liè à l'encodage de ton fichier. Les premiers caractères ressemblent à une signature BOM
    Ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [XML]$Doc=Get-Content -path $FullPathName  -Encoding utf8
    $Doc
    Sinon, essaie avec chacune de ses valeurs pour le paramètre -Encoding:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [System.Enum]::GetValues([Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding])
    Tu peux aussi vérifier l'encodage de ton fichier avec notepad.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Donc, je pense que ton bout de code pourrait fonctionné mais j'ai droit au problème de droit ><,

    donc mon code ressemble à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [XML]$Doc=Get-Content -path $C:\Users\Fabi3n\Desktop\472ED1A0-95DA-4E8B-847C-E08F84A9EDE3  -Encoding utf8
    $Doc
    Et j'ai droit à cette magnifique réponse :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set-ExecutionPolicy : L'accès à la clé de Registre 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microso
    ft.PowerShell' est refusé.
    Au niveau de C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1*: 1 Caractère*: 20
    + Set-ExecutionPolicy <<<<  Unrestricted
        + CategoryInfo          : NotSpecified: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
        + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyComma
       nd
    
    L'accès au chemin d'accès 'C:\Users\Fabi3n\Desktop' est refusé.
    Au niveau de C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1*: 2 Caractère*: 32
    + [XML]$Doc=Get-Content -path $C: <<<< \Users\Fabi3n\Desktop\472ED1A0-95DA-4E8B-847C-E08F84A9EDE3  -Encoding utf8
        + CategoryInfo          : PermissionDenied: (C:\Users\Fabi3n\Desktop:String) [], UnauthorizedAccessException
        + FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError

    J'ai bien essayer de lancer le powershell en admin, les boutons sont grisé, et j'ai ajouté sa au début du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set-ExecutionPolicy Unrestricted
    rien à faire, donc la virage à 90°, comment on met ses p***** de droit sur les scripts Powershell ?

    PS : je vais cherché sur le site en attendant.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Après quelque recherche infructueuse, j'ai trouvé le moyen de forcer administrateur pour la console powershell, cela enlève deux trois erreur mais pas tout sa me surprend,



    La par contre je coince....


    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
    Windows PowerShell
    Copyright (C) 2009 Microsoft Corporation. Tous droits réservés.
    
    PS C:\Windows\system32> cd ../..
    PS C:\>
    PS C:\> cd .\Users
    PS C:\Users> cd .\Fabi3n
    PS C:\Users\Fabi3n> cd .\Desktop
    PS C:\Users\Fabi3n\Desktop> & '.\Nouveau document texte.ps1'
    L'accès au chemin d'accès 'C:\Users\Fabi3n\Desktop' est refusé.
    Au niveau de C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1*: 2 Caractère*: 32
    + [XML]$Doc=Get-Content -path $C: <<<< \Users\Fabi3n\Desktop\472ED1A0-95DA-4E8B-847C-E08F84A9EDE3  -Encoding utf8
        + CategoryInfo          : PermissionDenied: (C:\Users\Fabi3n\Desktop:String) [], UnauthorizedAccessException
        + FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError
    
    PS C:\Users\Fabi3n\Desktop>
    si quelqu'un peux m'aider je n'ai grandement modifier mon code par rapport à avant...

  5. #5
    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
    Dans une console Powershell avec les droits admin, exécute ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set-ExecutionPolicy RemoteSigned
    Ensuite, pour le paramètre Path essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -path 'C:\Users\Fabi3n\Desktop\472ED1A0-95DA-4E8B-847C-E08F84A9EDE3'
    L'UAC est-elle activée ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Quel version de Windows as-tu ?
    L'UAC est-elle activée ?
    J'ai un Windows 7 64 bits
    Si j'ai bonne mémoire c'est cette clef , et oui elle était déjà à 0. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System => EnableLUA = 0


    Mais merci pour le RemoteSigned sa a fonctionné ^^


    par contre mon erreur (cette celle-ci me parait moins bizarre) est comme ass :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Impossible de convertir la valeur «*System.Object[]*» en type «*System.Xml.XmlDocument*». Erreur*: «*Données non valide
    s au niveau racine. Ligne 1, position 1.*»
    Au niveau de C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1*: 1 Caractère*: 10
    + [XML]$Doc <<<< =Get-Content -path 'C:\Users\Fabi3n\Desktop\472ED1A0-95DA-4E8B-847C-E08F84A9EDE3'  -Encoding utf8
        + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
        + FullyQualifiedErrorId : RuntimeException
    Je dois admettre que les logs acronis sont relou à traiter...

  7. #7
    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
    Ton fichier XML est à vérifier.
    La première ligne de ton fichier doit être :
    <?xml version="1.0" encoding="UTF-8" ?>
    Supprime dans ton fichier ce qui est en gras :
    8 <?xml version="1.0" encoding="UTF-8" ?>

    Ici on peut lire le fichier :
    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
    21
    $File='C:\temp\test.xml'
    @'
    <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
        <entry>
            <Time>
                1403688820
            </Time>
            <Code>
                11863307
            </Code>
        </entry>
    </XML_SERIALIZER>
    '@ |Set-content -path $File -Encoding utf8
        
    [XML]$Doc=Get-Content -path $File -Encoding utf8
    $doc
    # xml                                                         XML_SERIALIZER
    # ---                                                         --------------
    # version="1.0" encoding="UTF-8"                   XML_SERIALIZER

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Le problème viens du fait que je pourrais supprimer à la main ces premiers caractères, MAIS que justement le programme devrait le faire tous seul, car nous avons un serveur acronis et une 20e de client pour plus de 130 sauvegardes journalières. Je ne peux me permettre d'enlever dans chaque fichier de log ces premières lignes.

    Ce qu'il faudrait c'est que je déséréalise mon xml et que je le lise. Une interface PS est moins gourmande que 10 int. graphique d'Acronis.

    Donc oui sans ses @#~/!\ de caractères mon code marche bien, maintenant je vais cherché à retirer ses caractères avant.(Mais plus aujourd'hui sa ma soulé ^^).

  9. #9
    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
    Citation Envoyé par Fabi3n Voir le message
    Donc oui sans ses @#~/!\ de caractères mon code marche bien
    C'est déjà ce qu'il fallait vérifier.
    Citation Envoyé par Fabi3n Voir le message
    maintenant je vais cherché à retirer ses caractères avant.
    Exacte, il faut maintenant vérifier la chaîne de production de ce fichier, avant d'aller plus loin.
    Au pire on pourrait automatiser la suppression de ces caractères, mais mieux vaut régler le problème que de s'y adapter...
    Citation Envoyé par Fabi3n Voir le message
    (Mais plus aujourd'hui sa ma soulé ^^).

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Donc j'ai vérifier, pour contourner le problème il faudrait effacer les 7 premiers caractères devant : "<?xml version="1.0" encoding="UTF-8" ?>"

    Le problème c'est qu'il s'agit d'un fichier log incrémentiel, donc il ressemble à sa :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    ø  <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						8E9420CD-6032-4C5E-9707-DAEBD6520BFF
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    ø  <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						2654B0D2-F287-4232-9A6F-86F14183EEBF
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    ø  <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						E9451C41-F474-4CC8-A3AF-B5611F7743CC
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    et en gros il me faut juste le message qui s'affiche dans la console.

    Donc je me suis dit : "ouai, on a qu'a effacer ses 7 premiers foutu caractère à chaque fois", cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $exemple = '÷  <?xml version="1.0" encoding="UTF-8" ?>'
    $regex.Remplace($exemple,'','<?xml version="1.0" encoding="UTF-8" ?>',)
    Mais bon trop beau pour être vrai,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
    Au niveau de C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1*: 2 Caractère*: 16
    + $regex.Remplace <<<< ($exemple,'','<?xml version="1.0" encoding="UTF-8" ?>',0)
        + CategoryInfo          : InvalidOperation: (Remplace:String) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull
    Donc en gros on ne peux pas remplacer par rien ?

    PS : Je me suis inspirer de ce tuto : Clique sur moi !


    EDIT : J'ai réussi à faire tourner mon petit script sous windows 7(pour le test et la mise en place), puis sur notre serveur, (Windows 2003) je n'arrive pas à lancer le script...

    srcipt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #[XML]$Doc=Get-Content -path 'C:\Documents and Settings\All Users\Application Data\Acronis\BackupAndRecovery\MMS\LogEvents\00000000-0000-0000-0000-000000000000.2'  -Encoding utf8
    #$Doc
    resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PS C:\Documents and Settings\All Users\Bureau> .\toto.ps1
    Le terme «*.\toto.ps1*» n'est pas reconnu en tant qu'applet de commande, foncti
    on, programme exécutable ou fichier de script. Vérifiez le terme et réessayez.
    Au niveau de ligne*: 1 Caractère*: 10
    + .\toto.ps1 <<<<
    PS C:\Documents and Settings\All Users\Bureau>
    mais le comble sa doit être cela :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    PS C:\Documents and Settings\All Users\Bureau> $Doc=Get-Content -path 'C:\Docume
    nts and Settings\All Users\Application Data\Acronis\BackupAndRecovery\MMS\LogEve
    nts\00000000-0000-0000-0000-000000000000.2'  -Encoding utf8
    PS C:\Documents and Settings\All Users\Bureau>$Doc
    ø  <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						8E9420CD-6032-4C5E-9707-DAEBD6520BFF
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    ø  <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						2654B0D2-F287-4232-9A6F-86F14183EEBF
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    ø  <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						E9451C41-F474-4CC8-A3AF-B5611F7743CC
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    La si quelqu'un peux m'expliquer je suis preneur.................

  11. #11
    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
    Citation Envoyé par Fabi3n Voir le message
    Mais bon trop beau pour être vrai,
    Ceci fonctionne, ( le code de ta regex est faux) :
    Il y a tout de même un problème à la source, un fichier XML peu incrémenter le contenu d'une balise d'un même fichier, un compte rendu par jour, mais pas coller + déclarations '<?xml version="1.0" encoding="UTF-8" ?>'. Si tu le corriges manuellement, tu ne peux tjr pas le charger. Ce qui implique de corriger la ligne et de scinder ton fichier en autant de fichiers XML.

    Vérifie du côté de ton soft de backup, sinon il faut vraiment s'adapter au problème. La pire des approches à mon avis...

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message

    Vérifie du côté de ton soft de backup, sinon il faut vraiment s'adapter au problème. La pire des approches à mon avis...
    Acronis => logiciel propriétaire, les 3/4 des logs sont crypté pour t’ obligé à utilisé l'interface Acronis... J'ai fait tout les dossier et ouvert tous les logs en txt, ces xml séréalisé sont les seuls expoitable et obtenir les sources d'Acronis pour virer la séréalisation, le mecs du service clients d'Acronis ma dit : "Microsoft vous donnerais ces code sources pour pouvoir améliorer une interface linux ?, nous c'es pareil on a une console centraliser Acronis pourquoi voulez-vous utilisé Powershell pour validé des sauvegarde ?" Donc non peux pas modifier le soft.

    Ensuite :

    $exemple.Remove(0,7) est expoitable seulement si je force le String :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [string]$exemple = Get-Content -path 'C:\Users\Fabi3n\Desktop\00000000-0000-0000-0000-000000000000'
    $exemple.Remove(0,7)
    Mais cela resoud mon problème car le fichier deviens exploitable MAIS ¨^1é4¤ de 8#}§" , maintenant il me prend cela comme un fichier et non un xml, donc je vais chercher de mon coté (je pense que c'est plus simple en txt) toutefois juste retourner les chaine de caractère entre <message> lol </message> en txt, it's possible ?

  13. #13
    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
    Citation Envoyé par Fabi3n Voir le message
    pourquoi voulez-vous utilisé Powershell pour validé des sauvegarde ?"
    Peut être parce que ce n'est pas lui qui les valide visuellement
    Citation Envoyé par Fabi3n Voir le message
    $exemple.Remove(0,7) est expoitable seulement si je force le String
    Oui, ce qui implique que ton traitement doit avoir deux passes :
    -lecture du fichier en texte, modification ( regx ou autre)+découpage par XML et sauvegarde.
    -recherche dans les xml.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Donc, en modifiant légèrement mon script, j'ai réussi à une faire un xml déseréaliser. YOUPI !

    Maintenant j'ai une ultime requête, Y a-t-il une moyen de récupérer le contenu de la balise <message> la plus récente ? (ou la plus haute dans le log) directement et simplement ?

  15. #15
    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
    Citation Envoyé par Fabi3n Voir le message
    Y a-t-il une moyen de récupérer le contenu de la balise <message> la plus récente ?
    A partir de quel fichier exactement ?

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    A partir de quel fichier exactement ?

    Bah, le même :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						8E9420CD-6032-4C5E-9707-DAEBD6520BFF
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						2654B0D2-F287-4232-9A6F-86F14183EEBF
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    <?xml version="1.0" encoding="UTF-8" ?>
    <XML_SERIALIZER>
    	<entry>
    		<Time>
    			1403688289
    		</Time>
    		<Code>
    			11927553
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						E9451C41-F474-4CC8-A3AF-B5611F7743CC
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			The configuration has been regenerated and saved.
    		</Message>
    	</entry>
    </XML_SERIALIZER>
    En Linux la commande s’appelle grep, j'ai vu des équivalents en powershell mais je n'arrive pas à les déplyer :/

  17. #17
    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
    Une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $FullPathName='c:\temp\aconis.xml'
    $Doc=Get-Content -path $FullPathName -Encoding utf8|Out-String
    
    $Result=$doc -split '\s*<\?xml version="1.0" encoding="UTF-8" \?\>'
    $Datas=$result|where {$_ -ne [string]::Empty}
    
    '<?xml version="1.0" encoding="UTF-8" ?>',$Datas[0]|Set-Content c:\temp\backup1.xml 
    
    [xml]$f1=get-content c:\temp\backup1.xml
    $f1.XML_SERIALIZER.entry.Message.Trim()
    #The configuration has been regenerated and saved.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Désolé pour la lenteur de la réponse, j'étais sur un autre truc du genre "Pourrave, merdique,urgent ta mère"

    Merci pour ton début de piste Laurent, je l'ai adapté sur mon script et il me sort des erreur tels que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Impossible de convertir la valeur «*System.Object[]*» en type «*System.Xml.XmlDocument*». Erreur*: «*Élément
     racine manquant.*»
    Au niveau de C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1*: 15 Caractère*: 9
    + [XML]$f1 <<<< =get-content c:\temp\backup1.xml
        + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
        + FullyQualifiedErrorId : RuntimeException
     
    Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
    Au niveau de C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1*: 16 Caractère*: 27
    + $f1.XML.entry.Message.Trim <<<< (1)
        + CategoryInfo          : InvalidOperation: (Trim:String) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull
    PS : le Xml qu'il me sort contient juste la lettre S en majuscule, wtf ?

    Puis j'ai quand même tenté des essais de mon coté plus particulierement les select-Node(le fichier n'est plus sérialisé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $exemple = Get-Content -path 'C:\Users\Fabi3n\Desktop\472ED1A0-95DA-4E8B-847C-E08F84A9EDE3.xml'
    $node = $exemple.selectsinglenode("/XML/entry/entry")
    select-xml -xml $exemple -xpath "/XML/entry/Message" | % { $_.Node.Value }
    [XML]$Doc=Get-Content -path 'C:\Users\Fabi3n\Desktop\472ED1A0-95DA-4E8B-847C-E08F84A9EDE3.xml'  -Encoding utf8
    $Doc
    Alors mon code ne fait rien ^^, Je sis sur d'avoir fait une connerie qui mérite la peine de mort, mais je ne vois pas la faute :/

    A mon plaisir de revenir parmi vous :)


    EDIT : Dans cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '<?xml version="1.0" encoding="UTF-8" ?>',$Datas[0]|Set-Content c:\temp\backup1.xml
    Que représente le 0 ?

  19. #19
    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
    Citation Envoyé par Fabi3n Voir le message
    le Xml qu'il me sort contient juste la lettre S en majuscule, wtf ?
    Sans le fichier utilisé ni le code modifié on ne peut rien pour toi. Joint les deux fichiers...


    Citation Envoyé par Fabi3n Voir le message
    Je suis sur d'avoir fait une connerie qui mérite la peine de mort
    Tu es surtout condamné à lire un ouvrage sur Powershell
    Citation Envoyé par Fabi3n Voir le message
    Que représente le 0 ?
    La ligne utilisant l'opérateur -Split renvoi plusieurs 'fichier' xml. Ici je prends le premier élément, précédé de l'entête d'un fichier XML.
    Il te faut donc créer une boucle et générer autant de fichiers qu'il y a d'éléments dans la collection $Datas.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Sans le fichier utilisé ni le code modifié on ne peut rien pour toi. Joint les deux fichiers...
    Putain cte con

    Le fichier XML
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?xml version="1.0" encoding="UTF-8" ?>
    <XML>
    	<entry>
    		<Time>
    			1403688737
    		</Time>
    		<Code>
    			9568256
    		</Code>
    		<Severity>
    			2
    		</Severity>
    		<Data>
    			<map>
    				<item>
    					<first>
    						id
    					</first>
    					<second>
    						68A9EA8C-AF71-420D-BCD2-2FED7DB24FA8
    					</second>
    				</item>
    			</map>
    		</Data>
    		<Category>
    			1
    		</Category>
    		<Message>
    			Browsing contents of avfs:/local
    		</Message>
    	</entry>
    </XML>

    Et le Code PowerShell :

    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
    $FullPathName='C:\Users\Fabi3n\Desktop\472ED1A0-95DA-4E8B-847C-E08F84A9EDE3.xml'
    $Doc=Get-Content -path $FullPathName -Encoding utf8|Out-String
    $Result=$doc -split '\s*<\?xml version="1.0" encoding="UTF-8" \?\>'
    $Datas=$result|where {$_ -ne [string]::Empty}
    '<?xml version="1.0" encoding="UTF-8" ?>
        <prtg>
            <result>
             <channel>
               Message
             </channel>
             <value>
             '&$f1&'
             </value>
            </result>
        </prtg>',$Datas[1]|Set-Content c:\temp\backup1.xml 
    $f1.XML.entry.Message.Trim()
    [XML]$f1=set-content c:\temp\backup1.xml
    Mais entre temps, il a été adapté donc, l'erreur du moment (sympa cte formulation ) c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PS C:\Users\Fabi3n\Desktop> C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1
    Jeton «*&*» inattendu dans une expression ou une instruction.
    Au niveau de C:\Users\Fabi3n\Desktop\Nouveau document texte.ps1*: 24 Caractère*: 12
    +          '& <<<< $f1&'
        + CategoryInfo          : ParserError: (&:String) [], ParentContainsErrorRecordException
        + FullyQualifiedErrorId : UnexpectedToken
    Comme tu peux le voir, j'essaie de retourner dans le XML, une variable afin de pouvoir de m'éviter un cacophonie de méandre de blabalbabezkjhcibdcdfef

    Bref ce code me fait pété un câble... surtout que je suis sur que la variable $f1 va bugger si le script ce finissait

    EDIT : Merci pour l’explication du 0.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Récupérer un MCD depuis Oracle 9
    Par lenoil dans le forum PowerAMC
    Réponses: 2
    Dernier message: 23/04/2015, 18h17
  2. [XSLT] Récupérer le nom du fichier XML
    Par silverspike dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/04/2006, 15h01
  3. Réponses: 5
    Dernier message: 08/09/2005, 21h33
  4. [JSP]recuperer session-timeout dans web.xml
    Par seb_fou dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/05/2004, 17h01
  5. Réponses: 6
    Dernier message: 04/01/2004, 21h59

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