Benutzer mit den meisten Antworten
AccountExpires in AD mit einem Skript setzen

Frage
-
Hallo zusammen,
ich habe eine CSV-Datei (Adressenstamm aus eine NDS) aus welchem ich u.a. ein Ablaufdatum der User übernehmen will.
Die Definition ist u.a. folgende:
Import-CSV "C:\Users\hgierke\Documents\Meine Skripts\Adressbuch.csv" | % {
$User = $_.uid
$EMail = $_.mail
$DisplayName = $_.cn
$Status = $_.title
$Abteilung = $_.department
$Gebaeude = $_.location
$Telefon = $_.telephonenumber
$Fax = $_.facsimiletelephonenumber
$Handy = $_.mobile
$Ort = $_.l
$CC = $_.companyname
$UNID = $_.level2
$Firma = $_.level2_1
$Buero = $_.physicaldeliveryofficename
$Land = $_.c
$Plz = $_.postalcode
$Strasse = $_.officestreetaddress
$Benutzerkuerzel = $_.altfullnamesort
$PersNr = $_.employeeid
$Funktion = $_.level4_3
$Position = $_.level6
$Ablaufdatum = $_.level0_1Mein (Teil)skript sieht so aus:
if ($Ablaufdatum -ne "")
{$userobj.accountExpires=$Ablaufdatum
write-host $userobj.accountExpires
$userobj.commitchanges()}
Bei dieser Anweisung erhalte ich, nach mehreren Test, immer folgenden Fehler obwohl in dem entsprechenden Feld
ein Ablaufdatum ( 26.03.2012 ) enthalten ist.Fehlermeldung: 26.03.2012
Exception calling "CommitChanges" with "0" argument(s): "The attribute syntax specified to the directory
service is invalid.
"
At C:\Users\hgierke\Documents\Meine Skripts\UpdUserDaten_Neu_2.ps1:156 char:40
+ $userobj.commitchanges <<<< ()}
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodExceptionKann mir hierzu jemand eine Lösung anbieten, mit welcher ich das Datum entsprechend setzen kann?
Alle anderen Attribute werden fehlerfrei übernommen.
Danke schon mal im voraus.
Daddy48
Antworten
-
Account-Expires ist ein 64Bit Integer! Der als Filetime abgespeichert wird !
Siehe hier:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675098%28v=vs.85%29.aspxFolgendes sollt immer zu einem Korrekten Account-Expires führen:
$Ablaufdatum = ([DateTime]$_.level0_1).ToFileTime()
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Als Antwort markiert Daddy48 Mittwoch, 14. März 2012 06:50
Alle Antworten
-
suchmaschinen sind dein freund!
PowerShell accountExpires
=
http://www.powershell.nu/2010/08/19/setting-accountexpires-using-powershell/
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Bearbeitet Peter Kriegel Dienstag, 13. März 2012 15:31
-
Hallo,
Du musst das in eine Struktur "DateTime" konvertieren.
$Position = $_.level6 $Ablaufdatum = [DateTime]$($_.level0_1)
Du musst natürlich sicherstellen, das in $_.level0_1 ein korrektes Datum in der Form "MM.DD.YYYY" enthalten ist.
Viele Grüße
Frank
-- Frank Röder http://blog.iteach-online.de --
-
Account-Expires ist ein 64Bit Integer! Der als Filetime abgespeichert wird !
Siehe hier:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675098%28v=vs.85%29.aspxFolgendes sollt immer zu einem Korrekten Account-Expires führen:
$Ablaufdatum = ([DateTime]$_.level0_1).ToFileTime()
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Als Antwort markiert Daddy48 Mittwoch, 14. März 2012 06:50
-
Hallo Peter,
da hast Du recht. Ich war allerdings auf das cmdlet "new-aduser" aus. Da kannst Du nämlich auf ein normales Datum übergeben.
z.B.
set-aduser testuser -accountexpirationdate $([DateTime]"01.20.2012")
Ich hatte übersehen, das er über die DirectoryEntry Klasse geht.
Viele Grüße
Frank
-- Frank Röder http://blog.iteach-online.de --