Настройка форматирования объекта по умолчанию в виде таблицы
Я работал над функцией 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
добиться этого.