Моя цель - написать функцию, которая поддерживает запись любого массива в виде таблицы, где заданы аргументы - это массив и количество столбцов, необходимых в таблице.write output two dimension array как Format-Table
У меня есть следующий код ...
Function PrintArrayAsTable
{
Param ([String[]]$array ,[Int]$numOfItemsPerRow)
$elementCounter = 1
[String[]]$row = @()
[String[]]$tableArray = @()
ForEach ($element in $array)
{
$row += $element
if ($elementCounter % $numOfItemsPerRow -eq 0)
{
$tableArray += ,($row)
[String[]]$row = @()
}
$elementCounter++
}
if ($row)
{
$tableArray += ,($row)
[String[]]$row = @()
}
$tableArray | Format-Table
}
[String[]]$array = @('SamAccountName', 'msRTCSIP-UserEnabled', 'msRTCSIP-OptionFlags', 'msRTCSIP-PrimaryUserAddress', 'msRTCSIP-PrimaryHomeServer',
'mail', 'msExchMasterAccountSid', 'homeMDB', 'proxyaddresses', 'legacyExchangeDN',
'lastLogonTimestamp', 'logonCount', 'lastLogoff', 'lastLogon', 'pwdLastSet', 'userAccountControl', 'whenCreated', 'whenChanged', 'accountExpires',
'sn', 'givenName', 'displayName', 'distinguishedName', 'initials', 'l', 'st', 'street', 'title', 'description', 'postalCode', 'physicalDeliveryOfficeName', 'telephoneNumber', 'facsimileTelephoneNumber', 'info', 'memberOf', 'co', 'department', 'company', 'streetAddress', 'employeeNumber', 'employeeType', 'objectGUID', 'employeeID', 'homeDirectory', 'homeDrive', 'scriptPath', 'objectSid', 'userPrincipalName', 'url', 'msDS-SourceObjectDN', 'manager', 'extensionattribute8')
PrintArrayAsTable $array 5
Это напечатает следующий вывод ...
SamAccountName msRTCSIP-UserEnabled msRTCSIP-OptionFlags msRTCSIP-PrimaryUserAddress msRTCSIP-PrimaryHomeServer
mail msExchMasterAccountSid homeMDB proxyaddresses legacyExchangeDN
lastLogonTimestamp logonCount lastLogoff lastLogon pwdLastSet
userAccountControl whenCreated whenChanged accountExpires sn
givenName displayName distinguishedName initials l
st street title description postalCode
physicalDeliveryOfficeName telephoneNumber facsimileTelephoneNumber info memberOf
co department company streetAddress employeeNumber
employeeType objectGUID employeeID homeDirectory homeDrive
scriptPath objectSid userPrincipalName url msDS-SourceObjectDN
manager extensionattribute8
Вместо этого, я хочу, чтобы формат печати, чтобы быть похожим на следующий ...
SamAccountName msRTCSIP-UserEnabled msRTCSIP-OptionFlags msRTCSIP-PrimaryUserAddress msRTCSIP-PrimaryHomeServer
mail msExchMasterAccountSid homeMDB proxyaddresses legacyExchangeDN
lastLogonTimestamp logonCount lastLogoff lastLogon pwdLastSet
userAccountControl whenCreated whenChanged accountExpires sn
givenName displayName distinguishedName initials l
st street title description postalCode
physicalDeliveryOfficeName telephoneNumber facsimileTelephoneNumber info memberOf
co department company streetAddress employeeNumber
employeeType objectGUID employeeID homeDirectory homeDrive
scriptPath objectSid userPrincipalName url msDS-SourceObjectDN
manager extensionattribute8
Любая идея, как это сделать?
Просто чтобы быть ясно, что вы пытаетесь визуализировать массив в X одинаковых шириной столбцов , не упорядочить двумерный массив в таблицу с именованными столбцами? –
ну, входной аргумент - это просто массив. Я разделяю его на двумерный массив, поэтому каждый массив в двумерном массиве будет напечатан как строка таблицы. Количество столбцов будет основываться на входном аргументе функции. В этом примере мы используем '5', поэтому будет 5 столбцов. Ширина должна быть равна самой длинной строке в этом столбце. –