При использовании команды Format-Table
вместо простого перечисления имен свойств есть возможность предоставить хеш-таблицы, содержащие имя свойства (или некоторое выражение), а также метаданные о том, как должно отображаться это свойство (например, align
, width
).
$InputObject | Format-Table -Property @{Expression='Property1'; Width=100; Align="right";}, @{Expression='Property2'; Width=100; Align="left";}
Есть ли способ предоставить эту информацию в определении объекта ввода, например, каким-либо образом добавить эту информацию в набор PSStandardMembers
элементов.
Дополнительная информация
Мой конкретный вариант использования - иметь возможность иметь значения ширины и выравнивания по умолчанию, определенные в методе Compare-ObjectProperties
, чтобы никто, кто использует эту функцию, не вызывал Format-Table
со всеми метаданными этого свойства.каждый раз.
function Compare-ObjectProperties {
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true)]
$InputObject
,
[Parameter(Mandatory = $true)]
$CompareObject
)
Process {
$properties = @($InputObject, $CompareObject) | Get-Member -MemberType NoteProperty, Property | Select-Object -ExpandProperty Name | Sort-Object -Unique
$properties | %{
[pscustomobject][ordered]@{
PropertyName = $_
InputObject = $InputObject."$_"
CompareObject = $CompareObject."$_"
}
}
}
}
Clear-Host
$a = Get-ADUser someone
$b = Get-ADUser sometwo
Compare-ObjectProperties $a $b |
Where-Object {$_.InputObject -eq $_.CompareObject} |
Format-Table @{Expression='PropertyName'; Width=20;}, @{Expression='InputObject'; Width=100; Align="right";}, @{Expression='CompareObject'; Width=100; Align="left";}