binside
Goto Top

PowerShell - AD - System. ComObject wird nicht ausgelesen...

In meinem PS-Script will ich den accountExpires auslesen und ändern.

Dazu rufe ich mit

$User = [ADSI]"LDAP://CN=Max Mustermann,OU=Berlin,DC=bspdomain,DC=de"  

den User aus dem Active Directory ab und soll mit

$User.accountExpires

eigentlich den accountExpires-Wert auslesen können. Allerdings gibt mir die Konsole nur zwei Leerzeilen zurück.
Per

$User | get-member

erfährt man, dass "accountExpires = {System._ _ComObject}"
bei allen verfügbaren {System._ _ComObject} bekomme ich 2 Leerzeilen zurück. Alle anderen Werte werden anstandslos ausgegeben. Was ist da los?

Danke für eure Hilfe und eure Zeit.

MfG

/B_out

Content-Key: 148720

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

Printed on: April 25, 2024 at 13:04 o'clock

Member: Binside
Binside Aug 11, 2010 at 06:38:28 (UTC)
Goto Top
Ok ich habe mal ein bisschen weiter geforscht und etwas gefunden:

$Temp = New-Object directoryservices.directorysearcher($User)
#AccountExpires im Format "IADsLargInteger"  
$Temp.findone().properties.accountexpires

129293704000000000

#und im Datumsformat
[datetime]::fromfiletime(($Temp.findone().properties.accountexpires))

Mittwoch, 8. September 2010 00:00:00



wichtig scheint dabei zu sein, dass accountexpires klein geschrieben wird, denn

[datetime]::fromfiletime(($Temp.findone().properties.AccountExpires))

gibt "Cannot index into a null array." zurück.

Bei Änderungen des accountexpires-Wertes greifen jedoch ausnahmslos alle auf VBScript oder C# zurück, was sich für mich jedoch ausschließt. Gibt es keine Lösung in PowerShell diese Werte zu ändern?

MfG

/B_out
Member: Binside
Binside Aug 19, 2010 at 14:14:03 (UTC)
Goto Top
ich habs jetzt so gemacht:

$Datum = read-host '  
Geben Sie das Datum an, an dem der Account deaktiviert werden soll!
Format:  "DD.MM.YYYY" (Bitte mit Punkten angeben!)  
Eingabe '  
$AETag = $Datum.split(".")  
$AEMonat = $Datum.split(".")[1]  
$AEJahr = $Datum.split(".")[2]  
$AEDatum = "$AEJahr/$AEMonat/$AETag"  
$AEDatumLI = [datetime]::Parse($AEDatum, [System.Globalization.CultureInfo]::InvariantCulture)
$AEDatumLI = $AEDatumLI.ToFileTime()
$User = [ADSI]"LDAP://CN=$Name;OU=$Ort,DC=bspdomain,DC=de"  
$User.InvokeSet("accountexpires","$AEDatumLI")  
$User.SetInfo()