Die Frage ist schnell beantwortet und eine kurze Suche führt meistens etwas wie das folgende zutage:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles")
$ctx = [Microsoft.Office.Server.ServerContext]::GetContext((Get-SPWebApplication | Select -First 1))
$upm = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager -ArgumentList @($ctx)
$lang = "de-DE,en-US"
$enum = $upm.GetEnumerator()
while ($enum.MoveNext()) {
$up = $enum.Current
write-host "$($up.DisplayName) ($($up.AccountName))"
$up["SPS-MUILanguages"].Value = $lang
$up["SPS-ContentLanguages"].Value= $lang
$up.Commit()
}
Meistens sieht dann in der Zentraladministration alles gut aus:
Aber für "einige" (oder auch alle...) Benutzer erscheinen die Werte dann nicht in den MySites:
Das "Geheimnis" ist ein TimerJob ("User Profile Service Application_LanguageAndRegionSync") der allerdings nur richtig arbeitet, wenn die eigenschaft 'SPS-RegionalSettings-Initialized' auf true gesetzt ist. Im Standard läuft dieser Job jede Minute - ein Start, direkt nach der Anpassung kann aber auch nicht schaden.
Das Finale Skript muss also so aussehen:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") | out-null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles") | out-null
$ctx = [Microsoft.Office.Server.ServerContext]::GetContext((Get-SPWebApplication | Select -First 1))
$upm = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager -ArgumentList @($ctx)
$lang = "de-DE,en-US"
$enum = $upm.GetEnumerator()
while ($enum.MoveNext()) {
$up = $enum.Current
write-host "$($up.DisplayName) ($($up.AccountName))"
$up["SPS-MUILanguages"].Value = $lang
$up["SPS-ContentLanguages"].Value= $lang
$up["SPS-RegionalSettings-Initialized"].Value = $true
$up.Commit()
}
Get-SPTimerJob | ?{ $_.Name -like "*user*profile*languageandregion*" } | %{ $_.RunNow() }
Danach erscheinen auch die Anpassungen in der MySite:
Was gibt es noch dazu zu sagen?
- Die Sprach-codes müssen "korrekt" sein - also "de-DE" nicht "de-de".
- Der Text darf keine leerzeichen enthalten - also "de-DE,en-US", nicht "de-DE, en-US"



Keine Kommentare:
Kommentar veröffentlichen