heuristiker
Goto Top

ActiveDirectory - Alle User mit Ablaufdatum herausfiltern

Hallo Leute!

Bin in PowerShell noch nicht der Größus und es bedarf hin und wieder der tatkräftigen Unterstützung euererseits..! face-smile Ich habe mir ein Skript zusammgebastelt, welches folgendes erledigen soll:

In unserem AD gibt es Nutzerobjekte mit Ablaufdatum. Ich möchte alle Nutzerobjekte in eine Datei schreiben lassen, die ein solches Ablaufdatum haben (AD >> Nutzerobjekt >> Eigenschaften >> Konto -> Konto läuft ab). Zusätzlich wäre es schön, wenn das Ablaufdatum auch mit in eine Datei geschrieben würde.

Allerdings bin ich mir nicht sicher, ob ich auf dem Holzweg bin. Zumindest läuft es schon mal nicht...
$filter = "(&(objectClass=user)(objectCategory=person))"   
$Allusers = New-Object system.DirectoryServices.DirectorySearcher([adsi]"",$filter)   
$Allusers.pagesize = 10000 
$users=$Allusers.FindAll()

$Ausgabedatei = "C:\Ausgabedatei.txt"  


foreach($suser in $users) 
{ 
		$user = [adsi]"LDAP://$($suser.properties.item(""distinguishedname""))"   
		$AcctExp = $user.accountExpires.Value
		$lngValue = $user.ConvertLargeIntegerToInt64($AcctExp)
		
		#Wenn das ExpirationDate kleiner als das höchste Datum ist, dann läuft das Benutzerkonto irgendwann ab.
		
		If ($lngValue -lt [DateTime]::MaxValue.Ticks) 
		{
		
			$user | Add-content $Ausgabedatei	
			$lngValue = 0
		}
				 
} #Ende der Schleife

Content-ID: 356621

Url: https://administrator.de/contentid/356621

Ausgedruckt am: 26.11.2024 um 16:11 Uhr

134464
Lösung 134464 30.11.2017 aktualisiert um 11:35:12 Uhr
Goto Top
Import-Module ActiveDirectory
Get-Aduser -Filter * -Properties AccountExpires | select Name,@{n='Expires';e={[DateTime]::FromFileTime($_.accountexpires)}} | ?{$_.Expires -ge (get-date)} | export-csv './expiring_users.csv -Delimiter ";" -NoType -Encoding UTF8  
Fertsch ..
SeaStorm
Lösung SeaStorm 30.11.2017 um 11:37:07 Uhr
Goto Top
$NeverExpires = 9223372036854775807
Get-ADUser -filter {Enabled -eq $True } –Properties "DisplayName", "AccountExpires" | Where-Object {$_.AccountExpires -ne $NeverExpires -and $_.AccountExpires -ne 0 -and $_.AccountExpires -ne $null } |  
Select-Object -Property "Displayname",@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."AccountExpires")}} | export-csv "./expuser.csv" -Delimiter ";" -NoType -Encoding UTF8  
Heuristiker
Heuristiker 30.11.2017 aktualisiert um 11:50:28 Uhr
Goto Top
Vielen Dank für eure Hilfe! Ihr seid super! face-smile

SeaStorm: Bei deiner Lösung fehlt noch Import-Module ActiveDirectory