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-Key: 356621

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

Printed on: May 8, 2024 at 06:05 o'clock

Mitglied: 134464
Solution 134464 Nov 30, 2017 updated at 10:35:12 (UTC)
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 ..
Member: SeaStorm
Solution SeaStorm Nov 30, 2017 at 10:37:07 (UTC)
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  
Member: Heuristiker
Heuristiker Nov 30, 2017 updated at 10:50:28 (UTC)
Goto Top
Vielen Dank für eure Hilfe! Ihr seid super! face-smile

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