Get-UserLogon
function Get-UserLogon {[CmdletBinding()]param([Parameter ()][String]$Computer,
[Parameter ()][String]$OU, [Parameter ()][Switch]$All ) $ErrorActionPreference="SilentlyContinue" $result=@() If ($Computer) { Invoke-Command -ComputerName $Computer -ScriptBlock {quser} | Select-Object -Skip 1 | Foreach-Object { $b=$_.trim() -replace '\s+',' ' -replace '>','' -split '\s' If ($b[2] -like 'Disc*') { $array= ([ordered]@{'User' = $b[0]'Computer' = $Computer'Date' = $b[4]'Time' = $b[5..6] -join ' '}) $result+=New-Object -TypeName PSCustomObject -Property $array } else { $array= ([ordered]@{'User' = $b[0]'Computer' = $Computer'Date' = $b[5]'Time' = $b[6..7] -join ' '})$result+=New-Object -TypeName PSCustomObject -Property $array}}}If ($OU) {$comp=Get-ADComputer -Filter * -SearchBase "$OU" -Properties operatingsystem$count=$comp.count If ($count -gt 20) { Write-Warning "Searching $count computers. This will take awhile."} foreach ($u in $comp) { Invoke-Command -ComputerName $u.Name -ScriptBlock {quser} | Select-Object -Skip 1 | ForEach-Object {$a=$_.trim() -replace '\s+',' ' -replace '>','' -split '\s'If ($a[2] -like '*Disc*') {$array= ([ordered]@{'User' = $a[0]'Computer' = $u.Name'Date' = $a[4]'Time' = $a[5..6] -join ' '}) $result+=New-Object -TypeName PSCustomObject -Property $array} else { $array= ([ordered]@{'User' = $a[0]'Computer' = $u.Name'Date' = $a[5]'Time' = $a[6..7] -join ' '}) $result+=New-Object -TypeName PSCustomObject -Property $array}} } } If ($All) { $comp=Get-ADComputer -Filter * -Properties operatingsystem $count=$comp.count If ($count -gt 20) { Write-Warning "Searching $count computers. This will take awhile." } foreach ($u in $comp) {
Invoke-Command -ComputerName $u.Name -ScriptBlock {quser} | Select-Object -Skip 1 | ForEach-Object { $a=$_.trim() -replace '\s+',' ' -replace '>','' -split '\s' If ($a[2] -like '*Disc*') { $array= ([ordered]@{'User' = $a[0]'Computer' = $u.Name'Date' = $a[4]'Time' = $a[5..6] -join ' '})$result+=New-Object -TypeName PSCustomObject -Property $array}else {$array= ([ordered]@{'User' = $a[0]'Computer' = $u.Name'Date' = $a[5]'Time' = $a[6..7] -join ' '})$result+=New-Object -TypeName PSCustomObject -Property $array}}}}Write-Output $result}
[Parameter ()][String]$OU, [Parameter ()][Switch]$All ) $ErrorActionPreference="SilentlyContinue" $result=@() If ($Computer) { Invoke-Command -ComputerName $Computer -ScriptBlock {quser} | Select-Object -Skip 1 | Foreach-Object { $b=$_.trim() -replace '\s+',' ' -replace '>','' -split '\s' If ($b[2] -like 'Disc*') { $array= ([ordered]@{'User' = $b[0]'Computer' = $Computer'Date' = $b[4]'Time' = $b[5..6] -join ' '}) $result+=New-Object -TypeName PSCustomObject -Property $array } else { $array= ([ordered]@{'User' = $b[0]'Computer' = $Computer'Date' = $b[5]'Time' = $b[6..7] -join ' '})$result+=New-Object -TypeName PSCustomObject -Property $array}}}If ($OU) {$comp=Get-ADComputer -Filter * -SearchBase "$OU" -Properties operatingsystem$count=$comp.count If ($count -gt 20) { Write-Warning "Searching $count computers. This will take awhile."} foreach ($u in $comp) { Invoke-Command -ComputerName $u.Name -ScriptBlock {quser} | Select-Object -Skip 1 | ForEach-Object {$a=$_.trim() -replace '\s+',' ' -replace '>','' -split '\s'If ($a[2] -like '*Disc*') {$array= ([ordered]@{'User' = $a[0]'Computer' = $u.Name'Date' = $a[4]'Time' = $a[5..6] -join ' '}) $result+=New-Object -TypeName PSCustomObject -Property $array} else { $array= ([ordered]@{'User' = $a[0]'Computer' = $u.Name'Date' = $a[5]'Time' = $a[6..7] -join ' '}) $result+=New-Object -TypeName PSCustomObject -Property $array}} } } If ($All) { $comp=Get-ADComputer -Filter * -Properties operatingsystem $count=$comp.count If ($count -gt 20) { Write-Warning "Searching $count computers. This will take awhile." } foreach ($u in $comp) {
Invoke-Command -ComputerName $u.Name -ScriptBlock {quser} | Select-Object -Skip 1 | ForEach-Object { $a=$_.trim() -replace '\s+',' ' -replace '>','' -split '\s' If ($a[2] -like '*Disc*') { $array= ([ordered]@{'User' = $a[0]'Computer' = $u.Name'Date' = $a[4]'Time' = $a[5..6] -join ' '})$result+=New-Object -TypeName PSCustomObject -Property $array}else {$array= ([ordered]@{'User' = $a[0]'Computer' = $u.Name'Date' = $a[5]'Time' = $a[6..7] -join ' '})$result+=New-Object -TypeName PSCustomObject -Property $array}}}}Write-Output $result}