Suponho que, quando você diz que deseja uma saída "mais fácil de ler", quer dizer que deseja facilitar a leitura da saída no console, e não nesse arquivo CSV. Porque os arquivos CSV não devem ser bonitos ou fáceis para os humanos lerem - os arquivos CSV são fáceis de serem processados pelos computadores.
Assim, acabei de ignorar o cmdlet Export-CSV no final. Na minha opinião, obter bons resultados de console e obter dados CSV eficientes são dois objetivos totalmente separados.
Quando executo seu script, a saída é assim:
User ComputerName Domain LastUsed
---- ------------ ------ --------
Ryan SERVER1 SERVER1 9/25/2014 11:53:54 PM
NETWORK SERVICE SERVER1 NT AUTHORITY 9/25/2014 11:53:54 PM
LOCAL SERVICE SERVER1 NT AUTHORITY 9/25/2014 11:53:54 PM
SYSTEM SERVER1 NT AUTHORITY 9/25/2014 11:53:54 PM
Ryan SERVER2 SERVER2 9/25/2014 11:53:54 PM
NETWORK SERVICE SERVER2 NT AUTHORITY 9/25/2014 11:53:54 PM
LOCAL SERVICE SERVER2 NT AUTHORITY 9/25/2014 11:53:54 PM
SYSTEM SERVER2 NT AUTHORITY 9/25/2014 11:53:54 PM
Vejo o que você quer dizer sobre o console não separar ou colocar qualquer "intervalo" entre cada computador.
Então fiz algumas modificações no seu script:
:NextComputer Foreach ($Computer In "localhost", "localhost")
{
Write-Host " " -ForegroundColor Green -BackgroundColor Black
Write-Host " Massive Flashy Header For $Computer! " -ForegroundColor Green -BackgroundColor Black
Try
{
$Profiles = Get-WMIObject -ClassName Win32_UserProfile -ComputerName $Computer -ErrorAction Stop
}
Catch
{
Write-Error "Error while getting user profiles from $Computer': $($_.Exception.Message)"
Continue NextComputer
}
Write-Host " User profiles found: $($Profiles.Count) " -ForegroundColor Green -BackgroundColor Black
If ($Profiles.Count -LT 1)
{
Continue NextComputer
}
$ProfileCollection = @()
:NextProfile Foreach ($Profile In $Profiles)
{
$UserInfo = [WMI] ($Profile.__PATH -Replace "Win32_UserProfile", "Win32_SID")
$ProfileCollection += New-Object PsObject -Property @{
ComputerName = $Computer
Domain = $UserInfo.ReferencedDomainName
User = $UserInfo.AccountName
LastUsed = $Profile.ConvertToDatetime($Profile.LastUseTime)
}
}
$ProfileCollection | Format-Table -AutoSize
}
E agora a saída parece um pouco mais legível, já que os resultados de cada computador agora estão separados um do outro:
Massive Flashy Header For SERVER1!
User profiles found: 4
User ComputerName Domain LastUsed
---- ------------ ------ --------
Ryan SERVER1 SERVER1 9/25/2014 11:56:50 PM
NETWORK SERVICE SERVER1 NT AUTHORITY 9/25/2014 11:56:50 PM
LOCAL SERVICE SERVER1 NT AUTHORITY 9/25/2014 11:56:50 PM
SYSTEM SERVER1 NT AUTHORITY 9/25/2014 11:56:50 PM
Massive Flashy Header For SERVER2!
User profiles found: 4
User ComputerName Domain LastUsed
---- ------------ ------ --------
Ryan SERVER2 SERVER2 9/25/2014 11:56:50 PM
NETWORK SERVICE SERVER2 NT AUTHORITY 9/25/2014 11:56:50 PM
LOCAL SERVICE SERVER2 NT AUTHORITY 9/25/2014 11:56:50 PM
SYSTEM SERVER2 NT AUTHORITY 9/25/2014 11:56:50 PM
Mais ao seu gosto, sim?