danielg1974
Goto Top

Neues Passwort für AD-User-Konto bei Login per PowerShell-Skript

Hallo.

Ich habe auf einem SBS 2011 bestimmte User in einer Gruppe zusammengefasst.
Diese Gruppe wird von einem PowerShell-Skript erfasst.
In diesem PowerShell-Skript sollen die User bei Bedarf beim nächsten Login ein neues Passwort erstellen.

Der PowerShell-Befehl dafür wird jetzt ohne Fehler ausgeführt, bewirkt aber rein gar nichts.
Um dem nachzuforschen, habe ich dem Skript eine Log-Funktion vorangestellt.
Leider erfasst die Log-Funktion ebenfalls nichts.

Active Directory-Benutzer und -Computer
<company-name>.local ==> MyBusiness (Organisationseinheit) ==> ActiveUsers (Organisationseinheit) ==> <company-name>DomainUser (Verteilergruppe - Lokal (in Domäne)

$path = "C:\Temp"  
$date = get-date -format "yyyy-MM-dd-HH-mm"  
$file = ("Log_" + $date + ".log")  
$logfile = $path + "\" + $file  

function Write-Log([string]$logtext, [int]$level=0)
{
	$logdate = get-date -format "yyyy-MM-dd HH:mm:ss"  
	if($level -eq 0)
	{
		$logtext = "[INFO] " + $logtext  
		$text = "["+$logdate+"] - " + $logtext  
		Write-Host $text
	}
	if($level -eq 1)
	{
		$logtext = "[WARNING] " + $logtext  
		$text = "["+$logdate+"] - " + $logtext  
		Write-Host $text -ForegroundColor Yellow
	}
	if($level -eq 2)
	{
		$logtext = "[ERROR] " + $logtext  
		$text = "["+$logdate+"] - " + $logtext  
		Write-Host $text -ForegroundColor Red
	}
	$text >> $logfile
}

# log something
Write-Log "this is a simple log test"  

# create warning log entry
Write-Log "this is a simple log test" 2  

# use more than simple variables in a string
$cmds = get-command
Write-Log "there are $($cmds.count) commands available"  
Get-ADUser -Filter * -SearchBase “CN=<company-name>DomainUser,OU=ActiveUsers,OU=MyBusiness,DC=<company-name>,DC=Local” | Set-ADUser -ChangePasswordAtLogon:$True


Wo liegt mein Fehler?


Gruß Daniel

Content-Key: 458488

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

Printed on: May 15, 2024 at 01:05 o'clock

Member: SlainteMhath
SlainteMhath Jun 03, 2019 updated at 08:16:05 (UTC)
Goto Top
Moin,

38 Zeilen Logging-"Funktionalität" ohne richtigen Sinn, und 1 Zeile "Payload"... sehr nice face-smile Copy und Paste lässt grüßen!

Werden in Z.39 denn überhaupt User ausgewählt? Lass das Get-ADUser doch mal ohne Set-ADuser laufen

/EDIT: Du willst die Mitglieder der Gruppe abfragen und in SET... rein pipen? dann ist versuchs mal mit Get-AdGroup -Members ...

lg,
Slainte
Member: Looser27
Solution Looser27 Jun 03, 2019 at 08:34:56 (UTC)
Goto Top
Moin,

vielleicht hilft Dir das ein wenig weiter.

Das Skript wird bei uns täglich ausgeführt, um den Passwortwechsel auf den Login zu verschieben. Vielleicht kannst du Teile davon verwenden.

Gruß

Looser
Member: DanielG1974
DanielG1974 Jun 03, 2019 updated at 10:10:21 (UTC)
Goto Top
Danke.
Das hat mich auf den richtigen Weg gebracht.

Es ging auch einfacher:
Get-ADGroupMember -Identity <Gruppen-Name/OU-Name> | Set-ADUser -ChangePasswordAtLogon:$True

Sollte die Option "PasswordNeverExpires" (Kennwort läuft nie ab) aktiviert sein, muss man vorher noch folgendes ausführen:
Get-ADGroupMember -Identity <Gruppen-Name/OU-Name> | Set-ADUser -PasswordNeverExpires $False

Danke für die Hilfe.

Gruß Daniel
Member: DanielG1974
DanielG1974 Jun 03, 2019 at 10:13:06 (UTC)
Goto Top
Ja, manchmal hat man einfach nicht die Zeit sich alles selbst zu erarbeiten.
Das mit dem Log erstellen hatte ich mir tatsächlich rauskopiert.
Einfach weil ich ja wissen möchte, was ich wann mal geändert habe.
Aber leider scheint dieses Erstellen der Log-Datei nicht zu funktionieren.
Von daher fliegt es wieder raus.

Gruß Daniel