Лучшая практика - форматирование вывода нумерованного списка - PowerShell - PullRequest
0 голосов
/ 01 июня 2018

Вариант использования

В следующем коде перечислены текущие учетные записи пользователей со значениями SID на локальном хосте

Вывод формата в выходной нумерованный список не будет разделять значения в таблице

Как лучше всего кодировать читаемый форматированный вывод

Код

$sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().groups
$accounts = $sid.Translate([System.Security.Principal.NTAccount]).value

$hash = @{"sid"=$sid.value;"Accounts"=$accounts}

$obj = New-Object -TypeName psobject -Property $hash

for ($i=0; $i -lt $obj.sid.Length; $i++) 
{"{0:D2}. {1}  -   {2}" -f ($i),$obj.Accounts[$i],$obj.sid[$i]}

Вывод

00. Everyone  -   S-1-1-0
01. NT AUTHORITY\Local account and member of Administrators group  -   S-1-5-114
02. BUILTIN\Administrators  -   S-1-5-32-544
03. BUILTIN\Remote Desktop Users  -   S-1-5-32-555
04. BUILTIN\Remote Management Users  -   S-1-5-32-580
05. BUILTIN\Performance Log Users  -   S-1-5-32-559
06. BUILTIN\Users  -   S-1-5-32-545
07. NT AUTHORITY\INTERACTIVE  -   S-1-5-4
08. CONSOLE LOGON  -   S-1-2-1
09. NT AUTHORITY\Authenticated Users  -   S-1-5-11
10. NT AUTHORITY\This Organization  -   S-1-5-15
11. MicrosoftAccount\sumeet.singhji@outlook.com  -   S-1-11-96-3623454863-58364-18864-2661722203-1597581903-1914428568-11352006
56-1295981414-3729554605-567089576
12. NT AUTHORITY\Local account  -   S-1-5-113
13. LOCAL  -   S-1-2-0
14. NT AUTHORITY\Cloud Account Authentication  -   S-1-5-64-36

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Нет ничего плохого в ответе Мартина.Однако, если цель состоит в том, чтобы позволить кому-то, выполняющему скрипт, выбрать пользователя, то я фанат Out-Gridview:

$list = for ($i=0; $i -lt $obj.sid.Length; $i++) 
{
    [PsCustomObject]@{
        SID = $obj.sid[$i]
        Accounts = $obj.Accounts[$i]
    }   
}
$selected = $list | Out-Gridview -PassThru
Write-Host ('You selected {0} - {1}' -f $selected.Accounts, $selected.SID)
0 голосов
/ 01 июня 2018

Я бы создал список объектов с двумя свойствами (SID и Account):

$list = for ($i=0; $i -lt $obj.sid.Length; $i++) 
{
    [PsCustomObject]@{
        SID = $obj.sid[$i]
        Accounts = $obj.Accounts[$i]
    }   
}

Тогда вы получите хороший вывод, просто отсутив $list:

SID                                           Accounts                        
---                                           --------                                
S-1-1-0                                       Everyone                        
S-1-5-32-544                                  BUILTIN\Administrators          
S-1-5-32-559                                  BUILTIN\Performance Log Users   
S-1-5-32-545                                  BUILTIN\Users                   
S-1-5-4                                       NT AUTHORITY\INTERACTIVE        
S-1-2-1                                       CONSOLE LOGON                   
S-1-5-11                                      NT AUTHORITY\Authenticated Users
S-1-5-15                                      NT AUTHORITY\This Organization  
S-1-2-0                                       LOCAL                           
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...