garciam
Goto Top

Datum Formatieren

Hallo zusammen,

Kann mir vielleicht jemand bei diesem Script weiterhelfen. Ich habe folgendes Script zusammenkopiert:
$path     = "C:\Temp\"  
$location = "OU=Test,OU=Users,OU=Firma,DC=Domain,DC=local"   
$csv	  = ".\User.csv"  
$newpath = $path + $csv

Get-QADUser -SearchScope "OneLevel" -SearchRoot $location -Name * -sizelimit 0 -IncludedProperties extensionAttribute3,extensionAttribute6 |   
select-object `
@{Name="LoginName";Expression={$_.Initials}},  
Password,
ChangeOfPasswordRequired,
@{Name="LastName";Expression={$_.sn}},  
FirstName,
@{Name="Mail";Expression={$_.mail}},  
@{Name="EmploymentId";Expression={$_.extensionAttribute6}},  
Status,
UserType,
AuthorizationGroup,
MaxOrgUnit,
@{Name="Birthday";Expression={$_.extensionAttribute3}},  
InsuranceNumber,
MessageReceiver,
DispatchType | `
ForEach-Object { $_.Status = "J"; $_.Password = "123"; $_.ChangeOfPasswordRequired = "Ja"; $_.UserType = "MA"; $_.AuthorizationGroup = "MA"; $_.MaxOrgUnit = "Top"; return $_ } |   
Sort-object -property "LastName"| `  
Export-CSV $newpath -Force -NoTypeInformation -Delimiter ";" -encoding utf8;  

Bei @{Name="Birthday";Expression={$_.extensionAttribute3}} wird das Geburtsdatum im Format Tag.Monat.Jahr ins CSV übergeben. Ich bräuchte das Geburtsdatum aber im Format Jahr-Monat-Tag.

Ich habe es mit Get-Date -Formate yyyy-MM-dd versucht, aber irgendwas mache ich falsch. Kann mir jemand sagen wie ich das am besten anstelle? Vielen Dank!

Gruss

Content-Key: 218491

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

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

Member: colinardo
colinardo Oct 04, 2013 updated at 08:35:01 (UTC)
Goto Top
Hallo garciam,
mach aus der entsprechenden Zeile 19 mal folgendes:
@{Name="Birthday";Expression={get-date $_.extensionAttribute3 -Format "yyyy-MM-dd"}},

Grüße Uwe
Member: garciam
garciam Oct 04, 2013 at 08:42:04 (UTC)
Goto Top
Hallo Colinardo

Und so easy wäre es face-smile Danke vielmals!

Gruss
Member: colinardo
colinardo Oct 04, 2013 at 09:06:00 (UTC)
Goto Top
Beitrag bitte noch als gelöst markieren. Merci.
Member: garciam
garciam Oct 04, 2013 at 12:12:31 (UTC)
Goto Top
Ich habe noch ein weiteres Problem, welches ich nicht lösen kann. Bei "AuthorizationGroup" wird das "extensionAttribute7" auf dem Useraccount abgefragt. Bei manchen Useraccounts ist ein Wert in "extensionAttribute7" eingetragen, bei anderen nicht. Nun möchte ich das extensionAttribute7 prüfen und wenn ein Wert eingetragen ist, ein "Vorge" ins CSV schreiben, ansonsten ein "Mitar". Kann mir da noch jemand weiterhelfen, wäre super, danke!
Member: colinardo
colinardo Oct 04, 2013 at 12:48:16 (UTC)
Goto Top
if ($($_.extensionAttribute7) -ne "") {echo 'Vorge'}else{echo 'Mitar'}  
Member: garciam
garciam Oct 04, 2013 updated at 13:30:48 (UTC)
Goto Top
Danke! Das müsste ich dann schon unter ForEach-Object einfügen, oder? Es wird nur der ursprüngliche Text ins CSV geschrieben. Der ForEach-Object Teil wird ignoriert, es gibt auch keine Fehlermeldung.
ForEach-Object { $_.Status = "J"; $_.ChangeOfPasswordRequired = "N"; $_.UserType = "MA"; $_.MaxOrgUnit = "Top"; {if ($($_.extensionAttribute7) -ne "") {echo 'Vorge'}else{echo 'Mitar'}}; return $_ }  
Member: colinardo
colinardo Oct 04, 2013, updated at Oct 07, 2013 at 06:17:23 (UTC)
Goto Top
mach es so, die zusätzliche For-Each Schleife ist überflüssig ...
$path     = "C:\Temp\"  
$location = "OU=Test,OU=Users,OU=Firma,DC=Domain,DC=local"   
$csv	  = ".\User.csv"  
$newpath = $path + $csv

$users = Get-QADUser -SearchScope "OneLevel" -SearchRoot $location -Name * -sizelimit 0 -IncludedProperties extensionAttribute3,extensionAttribute6,extensionAttribute7  
$usersChanged = $users | select `
@{Name="LoginName";Expression={$_.Initials}},  
@{Name="Password";Expression={"123"}},  
@{Name="Status";Expression={"J"}},  
@{Name="ChangeOfPasswordRequired";Expression={"Ja"}},  
@{Name="UserType";Expression={"MA"}},  
@{Name="MaxOrgUnit";Expression={"Top"}},  
@{Name="LastName";Expression={$_.sn}},  
FirstName,
@{Name="Mail";Expression={$_.mail}},  
@{Name="EmploymentId";Expression={$_.extensionAttribute6}},  
@{Name="AuthorizationGroup";Expression={if ($($_.extensionAttribute7) -ne "") {echo 'Vorge'}else{echo 'Mitar'}}},  
@{Name="Birthday";Expression={$_.extensionAttribute3}},  
InsuranceNumber,
MessageReceiver,
DispatchType
$usersChanged | Sort-object -property "LastName" | Export-CSV $newpath -Force -NoTypeInformation -Delimiter ";" -encoding utf8;  

p.s. und mach mal einen Powershell-Kurs, wenn du schon damit hantierst ...
Grüße Uwe
Member: garciam
garciam Oct 07, 2013 at 06:04:12 (UTC)
Goto Top
Guten Morgen

Danke für deinen Vorschlag. Leider funktioniert es noch nicht:

Select-Object : Die Eigenschaft kann nicht verarbeitet werden, da die UserType-Eigenschaft bereits vorhanden ist.
Bei C:\User\Script.ps1:14 Zeichen:14

back-to-topselect-object <<<< `

+ CategoryInfo : InvalidOperation: (Domain\test-pu-01:PSObject) [Select-Object], PSArgumentException
+ FullyQualifiedErrorId : AlreadyExistingUserSpecifiedPropertyNoExpand,Microsoft.PowerShell.Commands.SelectObjectC
ommand


p.s. Du hast natürlich recht, mein PowerShell Buch liegt auch bereits auf meinem Schreibtisch und bis ende Jahr habe ich es hoffentlich durch.

Gruss
Member: colinardo
colinardo Oct 07, 2013 at 06:18:44 (UTC)
Goto Top
ah sorry, da waren zwei Felder doppelt ausgewählt, typo von mir... ist oben korrigiert.
Grüße Uwe
Member: garciam
garciam Oct 07, 2013 at 09:19:04 (UTC)
Goto Top
Vielen Dank! Nun funktioniert alles.
$path     = "C:\Temp"  
$location = "OU=Test,OU=Users,Ou=Firma,DC=Domain,DC=local"   
$csv	  = ".\User.csv"  
$newpath = $path + $csv

$users = Get-QADUser -SearchScope "OneLevel" -SearchRoot $location -Name * -sizelimit 0 -IncludedProperties extensionAttribute3,extensionAttribute6,extensionAttribute7  
$usersChanged = $users | select `
@{Name="LoginName";Expression={$_.Initials}},  
@{Name="Password";Expression={"123"}},  
@{Name="ChangeOfPasswordRequired";Expression={"N"}},  
@{Name="LastName";Expression={$_.sn}},  
FirstName,
@{Name="Mail";Expression={$_.mail}},  
@{Name="EmploymentId";Expression={"0-"+$_.extensionAttribute6}},  
@{Name="Status";Expression={"J"}},  
@{Name="UserType";Expression={"MA"}},  
@{Name="AuthorizationGroup";Expression={if ($($_.extensionAttribute7) -match "\w") {echo 'Vorge'}else{echo 'Mitar'}}},  
@{Name="MaxOrgUnit";Expression={"Top"}},  
@{Name="Birthday";Expression={get-date $_.extensionAttribute3 -Format "yyyy-MM-dd"}},  
InsuranceNumber,
MessageReceiver,
DispatchType
$usersChanged | Sort-object -property "LastName" | Export-CSV $newpath -Force -NoTypeInformation -Delimiter ";" -encoding utf8;  

Gruss