Reputation: 2814
I have an array which holds the logon info of the users as objects. Here are the printings of that array:
PS> $Write-Out $data1
System.Object System.Object System.Object System.Object System.Object System.Object System.Object
PS> $data1
ComputerName User Time Action
------------ ---- ------------------- ------
DC1 usr1 05/06/2013 11:51:35 logoff
DC1 usr1 05/06/2013 11:46:24 logon
DC1 usr1 05/06/2013 11:42:05 logoff
DC2 usr2 05/06/2013 11:44:08 logon
DC2 Administrator 05/06/2013 11:43:50 logoff
DC2 Administrator 05/06/2013 11:42:53 logon
DC2 Administrator 05/06/2013 11:40:27 logoff
I want to convert this array so that I can see logon and logoff times on the same line like this:
PS> $data2
ComputerName User Time LOGON Time LOGOFF
------------ ---- ------------------- -------------------
DC1 usr1 05/06/2013 11:46:24 05/06/2013 11:51:35
DC1 usr1 05/06/2013 11:42:05
DC2 usr2 05/06/2013 11:44:08
DC2 Administrator 05/06/2013 11:42:53 05/06/2013 11:43:50
DC2 Administrator 05/06/2013 11:40:27
Can you help me with converting the $data1 array to $data2 array?
Upvotes: 1
Views: 190
Reputation: 5504
Try this. It will give you the same $data2
, based on your $data1
, but might contain bugs.
$data2 = $data1 | Group-Object -Property ComputerName, User | foreach { # group
foreach ($r in $_.Group) { # record
if ($r.Action -eq "logon") {
New-Object PSObject -Property @{"Time LOGOFF"=$off; "Time LOGON"=$r.Time; User=$r.User; ComputerName=$r.ComputerName};
$off = $null;
continue;
} else {$off = $r.Time;}
}
if ($off) {New-Object PSObject -Property @{"Time LOGOFF"=$off; "Time LOGON"=""; User=$r.User; ComputerName=$r.ComputerName}; $off=$null;}
}
Upvotes: 0
Reputation: 115
I think you should create your own object and assign the values from your $data1. You could do something like :
$readableData1| Select ComputerName,User #Just an example to create a simple object
$data1|%{ #Foreach line in $data1
$readabledata.ComputerName = $_.ComputerName.ToString()
$readabledata.User= $_.User.ToString()
$array+= $readableData1
}
echo $array
Upvotes: 1