Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4057
  • Last Modified:

Formating Table output so that it doesn't truncate columns

Ok,

So I have a PowerShell script what now works pretty well to dump a basic weekly audit.

The big issue at this point is that it mails a text file that tells me:

- Accounts created this week
- Groups modified this week
- Users not logged on in 30 days
- Users not logged on in 30-60 days
- Users not logged on in over 90 days
- Users with active accounts that haven't logged on ever

To create the output, I'm doing this:

$OutputfilePath = "C:\ADUserAudit-"+([datetime]::Now).tostring("yyyyMMdd")+".txt"
$30DaysTable = ($30Days | format-table)
$60DaysTable = ($60Days | format-table)
$90DaysTable = ($90Days | format-table)

# Get users that have never logged in, but use Windows AD Powershell cmdlets as it should look at all domain controllers. Not restricted to OU:

$NeverBeenKissed = get-aduser -f {-not ( lastlogontimestamp -like "*") -and (enabled -eq $true)} | select samaccountname,name,distinguishedname

$NeverBeenKissedTable = $NeverBeenKissed | format-table
 
# Write to a file

Out-File $OutputfilePath

Add-Content -Path $OutputfilePath "Users Created in the Last Week:"
Add-Content -Path $OutputfilePath " "
$UsersCreatedLastWeekTable | Out-File $OutputfilePath -append
Add-Content -Path $OutputfilePath "Groups Modified in the Last Week:"
Add-Content -Path $OutputfilePath " "
$GroupsModifiedLastWeekTable | Out-File $OutputfilePath -append
Add-Content -Path $OutputfilePath "Users not logged in for 30 days:"
Add-Content -Path $OutputfilePath " "
$30DaysTable | Out-File $OutputfilePath -append
Add-Content -Path $OutputfilePath "Users not logged in for 60-90 days:"
Add-Content -Path $OutputfilePath " "
$60DaysTable | Out-File $OutputfilePath -append
Add-Content -Path $OutputfilePath "Users not logged in for over 90 days:"
Add-Content -Path $OutputfilePath " "
$90DaysTable | Out-File $OutputfilePath -append
Add-Content -Path $OutputfilePath "Users who have NEVER logged in!:"
Add-Content -Path $OutputfilePath " "
$NeverBeenKissedTable | Out-File $OutputfilePath -append

Open in new window


When I run the powershell script manually, I get a non-truncated output.  When I run it as a timer job, I get:

Name                       DN                                          samaccountname          
----                             --                                             --------------          
John Smith              CN=John Smith,OU=Use...    jsmith

I've looked at the format-table options, and I don't really see one that will obviously fix my problem.

How to I fix this, or put it in a format that will allow me to email it without loosing critical information?

My email command is this:

Send-MailMessage -To "group@company.com” -Subject “User Audit 7/7/30/60/90” -From “PowerShellAudit@company.com” -Body “Current weekly AD User Audit is attached. Note: You need to look at this file full screen.” -Priority High -SmtpServer $smtpServer -Attachments $OutputfilePath 

Open in new window

0
gerhardub
Asked:
gerhardub
  • 2
1 Solution
 
Raheman M. AbdulCommented:
Use -Autosize at the end of the format-table
Or
use -Wrap option
0
 
gerhardubAuthor Commented:
I ended up putting this in the beginning of the script... the blue and white is not needed.

# Prepare the UI environment so that we don't have an issue with the report being truncated:

$Shell = $Host.UI.RawUI
$Shell.WindowTitle="One PowerShell to Rule Them"
$Shell.BackgroundColor="Blue"
$Shell.ForegroundColor="White"
$size = $Shell.WindowSize
$size.width=240
$size.height=60
$Shell.WindowSize = $size
$size.width=240
$size.height=3000
$Shell.BufferSize = $size
Clear-Host

This was repurposed from a $profile article... so obviously the blue and white doesn't matter.  However, as long as the width does not exceed 240 characters, then the OU will not be truncated.

Using -WRAP or -AUTOSIZE causes other issues:

Wrap will make the report very hard to read, and autosize still operates as if the screen width is 120 chacters and truncates the report.
0
 
gerhardubAuthor Commented:
This solution prevents -wrap and it's readability issues, and the fact the -autosize only works within the confines of the current shell environment (which is 120 characters when running as a Windows timer job).
0

Featured Post

Lessons on Wi-Fi & Recommendations on KRACK

Simplicity and security can be a difficult  balance for any business to tackle. Join us on December 6th for a look at your company's biggest security gap. We will also address the most recent attack, "KRACK" and provide recommendations on how to secure your Wi-Fi network today!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now