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 :

convertto-html mais en mieux


Sujet :

Scripts/Batch

  1. #1
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut convertto-html mais en mieux
    salut,

    je voulais partagé avec vous une petite fonction proxy (beta) qui permet de manipuler la sortie de convertto-html assez facilement

    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    function Convertto-HTML
    {
    [CmdletBinding(DefaultParameterSetName='Page', HelpUri='http://go.microsoft.com/fwlink/?LinkID=113290', RemotingCapability='None')]
    param(
        [Parameter(ValueFromPipeline=$true)]
        [psobject]
        ${InputObject},
    
        [Parameter(Position=0)]
        [System.Object[]]
        ${Property},
    
        [Parameter(ParameterSetName='Page', Position=3)]
        [Parameter(ParameterSetName='Condition')]
        [string[]]
        ${Body},
    
        [Parameter(ParameterSetName='Page', Position=1)]
        [Parameter(ParameterSetName='Condition')]
        [string[]]
        ${Head},
    
        [Parameter(ParameterSetName='Page', Position=2)]
        [Parameter(ParameterSetName='Condition')]
        [ValidateNotNullOrEmpty()]
        [string]
        ${Title},
    
        [Parameter(ParameterSetName='Fragment')]
        [Parameter(ParameterSetName='Page')]
        [ValidateNotNullOrEmpty()]
        [ValidateSet('Table','List')]
        [string]
        ${As},
    
        [Parameter(ParameterSetName='Condition')]
        [Parameter(ParameterSetName='Page')]
        [Alias('cu','uri')]
        [ValidateNotNullOrEmpty()]
        [uri]
        ${CssUri},
        [Parameter(ParameterSetName='Condition')]
        [ValidateNotNullOrEmpty()]
        [string]
        ${ColoneName},
    
        [Parameter(ParameterSetName='Condition')]
        [ValidateNotNullOrEmpty()]
        ${Condition},
    
        [Parameter(ParameterSetName='Condition')]
        [ValidateSet('Row','Cell')]
        ${Action} = 'Cell',
    
        [Parameter(ParameterSetName='Fragment')]
        [ValidateNotNullOrEmpty()]
        [switch]
        ${Fragment},
    
        [ValidateNotNullOrEmpty()]
        [string[]]
        ${PostContent},
    
        [ValidateNotNullOrEmpty()]
        [string[]]
        ${PreContent})
    
    begin
    {
        try {
            $outBuffer = $null
            if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer))
            {
                $PSBoundParameters['OutBuffer'] = 1
            }
            $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Microsoft.PowerShell.Utility\ConvertTo-Html', [System.Management.Automation.CommandTypes]::Cmdlet)
     
            if($PSCmdlet.ParameterSetName -eq 'condition')
            {
                $null = $PSBoundParameters.Remove('ColoneName')
                $null = $PSBoundParameters.Remove('Condition')
                $null = $PSBoundParameters.Remove('Action')
    
                $__htmldata__ = ''
                 
                if($Action -eq 'Cell')
                {
                  $buildcond=$condition.ToString()  -replace "[}]\s*,\s*[{]",'} {' -replace '"([^"]+)"',"`$i.Style.cssText = ""`$1"""
                }
                else
                {
                  $buildcond=$condition.ToString()  -replace "[}]\s*,\s*[{]",'} {' -replace '"([^"]+)"',"`$i.parentElement.Style.cssText = ""`$1"""
                }
                $switch = @"
                switch(`$i.innertext)
                {
                  $buildcond
                }
    "@
                $scriptCmd = {& $wrappedCmd @PSBoundParameters | Microsoft.PowerShell.Utility\Out-String | Microsoft.PowerShell.Utility\Tee-Object -Variable __htmldata__ | Microsoft.PowerShell.Core\Out-Null }
            }
            else
            {
            $scriptCmd = {& $wrappedCmd @PSBoundParameters }
            }
            $steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin)
            $steppablePipeline.Begin($PSCmdlet)
        } catch {
            throw
        }
    }
    
    process
    {
        try {
            $steppablePipeline.Process($_)
        } catch {
            throw
        }
    }
    
    end
    {
        try {
            $steppablePipeline.End()
            if($PSCmdlet.ParameterSetName -eq 'condition')
            {
                $htmlfile = Microsoft.PowerShell.Utility\New-Object -ComObject HTMLFILE
                $htmlfile.IHTMLDocument2_write($__htmldata__)
                $index=$htmlfile.getElementsByTagName('th') | Microsoft.PowerShell.Core\Where-Object -FilterScript {$_.innertext -eq $coloneName}
    
               foreach($i in $($htmlfile.getElementsByTagName('td') | Microsoft.PowerShell.Core\Where-Object -FilterScript {$_.cellindex -eq $index.cellIndex})) {
                 Microsoft.PowerShell.Utility\Invoke-Expression  -Command $switch
               }
               
               $html = $htmlfile.documentElement.outerHTML
               $html
               $htmlfile.close()
            }
        } catch {
            throw
        }
    }
    
    }


    voici quelques exemples d'utilisation:

    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
    $htmlfile=Join-Path $env:temp test.htm 
    
    $condition = {
      {$_ -eq 'running'}, {"background:green"}
    }
    
    Get-Service | Convertto-HTML -Property name, status -ColoneName status -Condition $condition | sc $htmlfile
    ii $htmlfile
    
    $condition = {
      {$_ -eq 'running'}, {"background:green"}
      {$_ -eq 'stopped'}, {"background:red; color:white"}
    }
    
    Get-Service | Convertto-HTML -Property name, status -ColoneName status -Condition $condition | sc $htmlfile
    ii $htmlfile
    
    Get-Service | Convertto-HTML -Property name, status -ColoneName status -Condition $condition -Action Row | sc $htmlfile
    ii $htmlfile

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Merci,

    ça faît vraiment plaisir de te relire !

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    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 sachadee Voir le message
    ça faît vraiment plaisir de te relire !
    +1

  4. #4
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    merci à vous

Discussions similaires

  1. [Mail] envois de mail en HTML mais pas tous compatible
    Par clad strife dans le forum Langage
    Réponses: 3
    Dernier message: 26/03/2007, 21h20
  2. Réponses: 5
    Dernier message: 16/12/2006, 22h29
  3. Réponses: 3
    Dernier message: 27/11/2006, 19h57
  4. JLabel avec HTML mais texte déborde
    Par Belegkarnil dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 28/02/2006, 12h18
  5. replace, mais en mieux
    Par ryan dans le forum ASP
    Réponses: 2
    Dernier message: 26/04/2005, 21h15

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