Lizenzierung von migRaven.24/7: Berechnung der relevanten AD-Konten

Für das korrekte Auslesen der relevanten Benutzerkonten (Angemeldet innerhalb der letzten 90 Tage) ist folgendes Powershell Skript zu verwenden:

Es werden alle aktiven Accounts gezählt. Dafür werden alle Domänen Controller abgefragt. Hinweis für Sie, falls die Werte nicht übereinstimmen, sollte die Synchronisierung der DC untereinander überprüft werden.

Starten Sie das Script in einer Powershell Console auf einem Ihrer Domänen Controller.

param([Parameter(Mandatory=$False,HelpMessage="Um das Zählen auf eine OU zu beschränken, Geben Sie den Namen der OU ein: (im Format: OU=meine OU,DN=X,DN=Y)")]$SearchBase)
cls

$DefaultNamingContext=([ADSI]"LDAP://RootDSE").defaultNamingContext
if ([string]::IsNullOrWhiteSpace($SearchBase)) {
    #write-host "Searchbase-Parameter nicht festgelegt, Verwendung des Standardnamenskontexts $DefaultNamingContext (Oder Übergeben Sie das Argument -searchBase, um eins im vorhand zu setzen)"
    if ((read-host "Wollen Sie das Zählen auf eine OU beschränken?") -match "^y$|^j$|Ja|Yes") {
        $searchBase=read-host "Geben Sie den Namen der OU ein: (im Format: OU=meine OU..,$(([ADSI]"LDAP://RootDSE").rootDomainNamingContext)"
    } else {
        $SearchBase=$DefaultNamingContext.toString()
        write-host "Rückfall auf Standardwert $SearchBase"
    }

}

if ([string]::IsNullOrWhiteSpace($SearchBase)  -or (-not (($searchBase -eq ([ADSI]"LDAP://RootDSE").rootDomainNamingContext.toString() ) -or ($searchBase -eq $DefaultNamingContext.toString())  -or ([ADSI]::Exists($searchBase)) ))){
    $SearchBase=$DefaultNamingContext.toString()
    write-warning "Ungültiger Suchbasiswert, Rückfall auf Standardwert $SearchBase"
}

$domain_user_all = (Get-ADUser -searchbase $SearchBase -Filter *).Count
$domain_user_active = (Get-ADUser -searchbase $SearchBase -LDAPFilter "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))").count
$domain_user_login_90days = (Get-ADUser -searchbase $SearchBase -Filter *).Count - (Get-ADUser -searchbase $SearchBase -Filter * -Properties LastLogonTimeStamp | select @{Name="LastLogonTimeStamp";Expression={([datetime]::FromFileTime($_.LastLogonTimeStamp))}} | where {$_.LastLogonTimeStamp -lt (Get-Date).AddDays(-90)}).Count
$domain_user_HealthMailbox = (Get-ADUser -searchbase $SearchBase -Filter "name -like 'HealthMailbox*' ").count

Write-Host "Domaincontrollern werden abgefragt . . ."
Write-Host ""
Get-ADDomainController -Filter * |Select Name |% { $_.Name+": "+ ((Get-ADUser -searchbase $SearchBase -Server $_.Name -Filter *).Count - (Get-ADUser -searchbase $SearchBase -Server $_.Name -Filter * -Properties LastLogonTimeStamp | select @{Name="LastLogonTimeStamp";Expression={([datetime]::FromFileTime($_.LastLogonTimeStamp))}} | where {$_.LastLogonTimeStamp -lt (Get-Date).AddDays(-90)}).Count) }
Write-Host ""
Write-Host "Anzahl aller Accounts unter $searchBase : " $domain_user_all
Write-Host ""
Write-Host "Anzahl aller aktiven Accounts unter $searchBase : " $domain_user_active
Write-Host ""
Write-Host "Anzahl der Benutzeraccounts unter $searchBase, die sich in den letzten 90 Tage angemeldet haben: " $domain_user_login_90days
Write-Host ""
Write-Host "aktive HealthMailboxen: " $domain_user_HealthMailbox
Write-Host ""
Write-Host "Anzahl der Benutzeraccounts unter $searchBase (ohne aktive HealthMailboxen), die sich in den letzten 90 Tage angemeldet haben: " ($domain_user_login_90days - $domain_user_HealthMailbox)
Write-Host "------------------------------------------------------------------------------------------------------------------"
Write-Host "Anzahl der berechneten Konten: " ($domain_user_login_90days - $domain_user_HealthMailbox) -ForegroundColor yellow
Write-Host ""
Get-ADDomainController -Filter * |Select Name |% { (Get-ADUser -searchbase $SearchBase -Server $_.Name -Filter * -Properties LastLogonTimeStamp | select samAccountName,@{Name="LastLogonTimeStamp";Expression={([datetime]::FromFileTime($_.LastLogonTimeStamp))}} | where {$_.LastLogonTimeStamp -gt (Get-Date).AddDays(-90)}) | Out-File "Benutzerdatei $($_.Name).txt" ; write-Host "Benutzerdatei $($_.Name).txt ist erstellt (internen Gebrauch des Kunden)" }
Write-Host ""

Permanentlink zu diesem Beitrag: https://help.migraven.com/berechnung-der-relevanten-ad-konten-in-migraven-24-7/