Pour ceux qui se servent de la sortie via Out-GridView, vous savez certainement qu’on ne peut pas copier les entêtes quand on veut copier/coller le contenu de la vue.

C’est assez embêtant de tout retaper, surtout pour moi qui suis une vrai feignasse…

Du coup j’ai créer une fonction pour contourner ce problème et je vous la met à disposition bien évidemment (le partage, c’est le pilier de la pérénité de la connaissance), sa seule fonction est de rajouter les entêtes sur la première ligne et d’afficher le résultat avec Out-GridView

function Out-GridViewWithHeaders {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true,
                   Position=0,
                   ValueFromPipeline=$true
        )]
        [PSObject[]]
        $Data
    )
    
    begin {
        $Out = @()
        $DataCollect = @()
    }
    
    process {
        foreach ($item in $Data) {
            $Collector = New-Object PSCustomObject
            foreach ($Property in $item.psobject.Properties.Name){
                $Collector | Add-Member NoteProperty $Property $item.$($Property)
            }
            $DataCollect += $Collector
        }
    }
    
    end {
        $Headers = New-Object PSCustomObject
        
        foreach ($Property in $Data[0].psobject.Properties.Name){
            $Headers | Add-Member NoteProperty $Property $Property
        }

        $Out += $Headers
        $Out += $DataCollect

        $Out | Out-GridView
    }
}

Et on l’utilise comme ça par exemple :

Get-ADUser -filter * -Properties MemberOf | Out-GridViewWithHeaders

0 commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *