Jak wygenerować i wyeksportować raport o wszystkich zalogowanych użytkownikach

Administratorzy nierzadko chcą znać wykaz wszystkich aktualnie zalogowanych użytkowników. Informację tę można uzyskać, korzystając ze skryptu Windows PowerShell. Jednak pisanie skryptu i jego ciągłe zmienianie w celu wygenerowania raportu w określonym formacie jest procesem żmudnym. Systemy inspekcji AD, takie jak ADAuditPlus, pozwalają administratorom uzyskać raport w mgnieniu oka. Poniżej przedstawiono porównanie uzyskiwania raportu o wszystkich użytkownikach AD zalogowanych za pomocą programów Windows PowerShell i ADAudit Plus:

PowerShell

Etapy uzyskiwania informacji o wszystkich użytkownikach zalogowanych za pomocą PowerShell:

  • Określ domenę, z której ma zostać pobrany raport.
  • Określ atrybuty LDAP potrzebne do pobrania raportu.
  • Określ główny kontroler domeny, z którego ma zostać pobrany raport.
  • Określ powyższe parametry w podanym poniżej skrypcie i skompiluj.
  • Wykonaj go w programie Windows PowerShell.
  • Raport zostanie wyeksportowany w formacie z rozszerzeniem .psm.
  • Aby uzyskać raport w innym formacie, odpowiednio zmodyfikuj skrypt.

Sample Windows PowerShell script

function Get-Execute it in Windows PowerShell.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 "Search $count computers. This may take some time ... About 4 seconds for each computer"
 
}
 
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 "Search $count computers. This may take some time ... About 4 seconds for each computer ..."
 
}
 
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
}

 Copied
Kliknij, aby skopiować cały skrypt

ADAudit Plus

Uzyskiwanie raportu:

  • Zaloguj się do konsoli sieciowej ADAudit Plus jako administrator.
  • Przejdź do karty Raporty. Kliknij część Logowanie użytkownikaw lewym oknie i wybierz opcję Raporty o logowaniu użytkownika.
  • Wybierz opcję Eksportuj jako, aby wyeksportować raport w dowolnym z preferowanych formatów (CSV, PDF, HTML, CSVDE i XLSX).

Zrzut ekranu

powershell-get-logged-on-user-1
 

Poniżej przedstawiono ograniczenia dotyczące uzyskiwania raportu o wszystkich użytkownikach usługi AD zalogowanych za pomocą narzędzi natywnych, takich jak Windows PowerShell:

  • Ten skrypt można uruchomić tylko na komputerach z rolą Active Directory Domain Services.
  • Występują trudności ze zmianą formatów daty i zastosowaniem różnych stref czasowych w wynikach daty.
  • Występują trudności z eksportowaniem raportu w formatach plików innych niż CSV.
  • Zastosowanie większej liczby filtrów, takich jak jednostka organizacyjna lub „Nazwa użytkownika zaczyna się od”, zwiększy złożoność zapytania LDAP.

ADAudit Plus generuje raport, automatycznie skanując wszystkie kontrolery domeny w domenie, aby pobrać informacje o użytkownikach zalogowanych i wyświetlić je na prostym i intuicyjnie zaprojektowanym interfejsie użytkownika.

  • Wykonywanie skryptów PowerShell i uproszczony audyt zmian w AD za pomocą ADAudit Plus.
  •  
  • Przez kliknięcie „Pobierz bezpłatną wersję próbną” akceptujesz licencję użytkownika i polityką prywatności.
  •  
  • Dziękujemy za pobranie!
  • Pobieranie powinno rozpocząć się automatycznie w ciągu 15 sekund. Jeśli nie rozpocznie się automatycznie, kliknij tutaj, aby pobrać ręcznie