Настройка форматирования объекта по умолчанию в виде таблицы

Я работал над функцией PowerShell для запроса WSUS и возврата имени компьютера, группы обновлений, LastSyncTime и необходимых / неудачных обновлений.

Функция выводит объект

typename: Microsoft.UpdateServices.Internal.BaseApi.ComputerTarget

Я добавил пользовательские свойства к этому существующему объекту и просто хотел указать, какие объекты будут отображаться в выводе. Чтобы установить это, я использовал этот блок кода:

#Creating my object:
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer("mywsusserver.domain.local",$False)
$results = $wsus.SearchComputerTargets("search_string")

#add Custom Members
$results | Add-Member -MemberType AliasProperty -Name ComputerName -Value FullDomainName
$results | Add-Member -NotePropertyName "Groups" -NotePropertyValue ($results.GetComputerTargetGroups() | where {$_.name -ne 'All Computers'}).name
$results | Add-Member -NotePropertyName "NeededUpdates" -NotePropertyValue ($objupdateinfo.downloadedcount + $objupdateinfo.notinstalledcount)
$results | Add-Member -NotePropertyName "FailedUpdates" -NotePropertyValue $objupdateinfo.failedcount         

#set the default display properties for my object
$defaultDisplayset = 'ComputerName','Groups','IPAddress','LastSyncTime','NeededUpdates','FailedUpdates'

$defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet',[string[]]$defaultDisplaySet)

$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet)

$results | Add-Member MemberSet PSStandardMembers $PSStandardMembers

Кредит для отображения информации о недвижимости: эта статья.

Поэтому, когда я отображаю вывод этого блока кода, я получаю что-то вроде этого:

PS C: \> $ результаты


ComputerName: Servername1
Группы: третья неделя
IP-адрес: 192.168.1.100
LastSyncTime: 13.09.2017 2:19:51
Требуется обновлений: 15
FailedUpdates: 0

ComputerName: Servername2
Группы: Заказчик - Третья неделя
IP-адрес: 192.168.100.73
LastSyncTime: 13.09.2017, 2:44:34
Требуется обновлений: 7
FailedUpdates: 0

ComputerName: Servername3
Группы: третья неделя
IP-адрес: 192.168.200.233
LastSyncTime: 13.09.2017, 2:09:23
Требуется обновлений: 6
FailedUpdates: 0

И что я хочу отобразить по умолчанию это:

ComputerName Groups IPAddress LastSyncTime NeededUpdates FailedUpdates
------------ ------ --------- ------------ ----------- - -------------
Servername1 Третья неделя 192.168.1.100 13.09.2017 2:19:51 15             0
Servername2 Третья неделя 192.168.100.73 13.09.2017 2:44:34 7             0
Servername3 Третья неделя 192.168.200.233 13.09.2017 2:09:23 6             0

Но единственный способ добиться этого - использовать:

$results | Format-Table -AutoSize

Я уже исследовал эту статью, я просто хочу, чтобы вывод ЭТОГО ОБЪЕКТА был таблицей без использования Format-Table добиться этого.

0 ответов

Другие вопросы по тегам