Format-PoshTable (modification of post by view diff)
embed code: <script type="text/javascript" src="http://PoshCode.org/embed/1699"></script>download | new post
Format-PoshTable puts the output in a WPF DataGrid (inline in PoshConsole, popup otherwise)
- function Format-PoshTable {
- #.Synopsis
- # Format-PoshTable puts the output in a WPF DataGrid (inline in PoshConsole)
- #.Description
- # Outputs a WPF datagrid of the objects (and properties) specified.
- # This grid can be sorted, rearranged, etc
- [CmdletBinding()]
- param(
- [parameter(ValueFromPipeline=$true)]
- [Array]$InputObject
- ,
- [Parameter(Position=1)]
- [String[]]$Property = "*"
- ,
- [Parameter(Position=2)][Alias("Type")]
- [Type]$BaseType # a type to use as the generic in the collection
- ,
- [Parameter()]
- [Switch]$Popup = (![bool]$Host.PrivateData.WpfConsole)
- )
- Begin
- {
- $global:theFormatPoshTableDataGrid = $null
- if (!(Get-Command datagrid) )
- {
- Import-Module PowerBoots
- Add-BootsFunction 'C:\Program Files (x86)\WPF Toolkit\*\WPFToolkit.dll'
- }
- }
- Process
- {
- # Create the window here instead of in BEGIN because we need to know the TYPE for the datagrid
- if(!$global:theFormatPoshTableDataGrid) {
- if(!$BaseType) { $BaseType = $InputObject[0].GetType().FullName }
- # We're going to create a special collection ...
- $global:ObservableCollection = new-object System.Collections.ObjectModel.ObservableCollection[$BaseType]
- foreach($i in $InputObject) { $ObservableCollection.Add($i) > $null }
- boots {
- Param($ItemCollection, $Property)
- datagrid -RowBackground "AliceBlue" -AlternatingRowBackground "LightBlue" -On_AutoGeneratingColumn {
- Param($Source,$SourceEventArgs)
- $header = $SourceEventArgs.Column.Header.ToString()
- $Cancel = $true
- # If it matches any of the properties, don't cancel it.
- foreach($h in $Source.Tag) { if($header -like $h) { $Cancel = $false } }
- $SourceEventArgs.Cancel = $Cancel
- } -ColumnHeaderStyle {
- Style -Setters {
- Setter -Property ([System.Windows.Controls.ListView]::FontWeightProperty) -Value ([System.Windows.FontWeights]::ExtraBold)
- }
- } -ItemsSource $ItemCollection -ov global:theFormatPoshTableDataGrid -tag $Property
- } $ObservableCollection $Property -Inline:(!$Popup) -Popup:$Popup
- } else {
- @($global:theFormatPoshTableDataGrid)[0].Dispatcher.Invoke( "Normal", ([Action]{ foreach($i in @($InputObject)) { $global:ObservableCollection.Add($i) > $null } }) )
- }
- }
- }
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.
PowerShell Code Repository