Table-Format help - output not expected
while have been using vbscript while new powershell. started new job took on managing in house written powershell tool. additionally, trying streamline other processes , while can via vbscript trying in powershell learning.
so, said, have script working on , trying output formatted way want it. using export-csv output looks right when trying use format-table doesn't (will show example below)
foreach ($line in (get-content email_addresses.txt)) { $user = get-aduser - filter 'emailaddress -like $line' -properties emailaddress, displayname, samaccountname, description | select enabled, samaccountname, displayname, emailaddress, description #note: select display order used export-csv $obj = new-object psobject if (-not ($user -eq $null)) { $enabled = @{ name = " enabled"; expression = { " " + $_.enabled }; width = 9; alignment = "left" } $name = @{ name = " userid "; expression = { " " + $_.samaccountname + " " }; width = 15; alignment = "left" } $displayname = @{ name = "displayname"; expression = { $_.displayname }; width = 35; alignment = "left" } $emailaddress = @{ name = "emailaddress"; expression = { $_.emailaddress }; width = 20; alignment = "left" } $description = @{ name = "description"; expression = { $_.description }; width = 50; alignment = "left" } $table = $enabled, $name, "displayname", "emailaddress", $description write-output $user | format-table $table -hidetableheaders $user | export-csv output.csv -append -notypeinformation -force } # $obj | add-member "display name" $displayname # $obj | add-member "email address" $emailaddress # $obj | add-member "username" $username # $obj | add-member "account enabled?" $enabled # $obj | add-member description $desc # write-output $obj | format-table -hidetableheaders -autosize } the output shows below. user info, 3 empty lines, user info (rinse , repeat). if remove hidetableheaders table headers each line.
my goal have header once each user afterwards. missing? stated, export-csv writes correctly.
the table-format:
true username1 smith, bob bs@blah.com someinfo here
true username2 jones, john jj@blah.com info here
3rd line (repeat)
and in case reading knows answer, output enable check supposed blank if false? appears case.
hi,
generally should build entire object first , use format-* cmdlets.
what version of powershell running?
edit: here's how i'd handle (this work in v2, there's shorter ways in later versions):
$out = @() get-content .\email_addresses.txt | foreach { $userdetails = get-aduser -filter "emailaddress -eq '$_'" -properties emailaddress, displayname, description $props = @{ enabled = $userdetails.enabled userid = $userdetails.samaccountname displayname = $userdetails.displayname emailaddress = $userdetails.emailaddress description = $userdetails.description } $out += new-object psobject -property $props } $out | select enabled,userid,displayname,emailaddress,description | export-csv .\userdetails.csv -notypeinformation $out | select enabled,userid,displayname,emailaddress,description | format-table -autosize don't retire technet! - (don't give yet - 12,830+ strong , growing)
Windows Server > Windows PowerShell
Comments
Post a Comment