In bestimmten
Szenarien kann es Sinn machen, Teile der mySite Funktionen zu nutzen
ohne die mySite selbst zur Verfügung zu stellen.
Man stelle sich zum Beispiel eine
persönliche Favoriten Funktion für Dokumente oder Websites vor. Mit
Hilfe der Standardfunktion "Follow" kann ein Nutzer sehr einfach einem
Dokument oder z.B. einer Website folgen. Die gefolgten Inhalte kann man
dann wiederum sehr einfach in einem Webpart darstellen und so z. B. als
"Favoriten" auf einer Startseite darstellen, ohne die ganze mySite
Funktion freischalten zu müssen.
Voraussetzung hierfür ist
allerdings, dass die entsprechenden Benutzer eine persönliche mySite
haben. Da diese aber normalerweise in dem Moment in dem der Nutzer zum ersten Mal auf den mySite Link klickt erstellt werden, benötigt man eine Funktion
die dies im Hintergrund durchführt.
Wie so oft hilft hier ein kleines
Powershell Script, welches man z. B. über einen Timer Job oder einen
Scheduled Task regelmäßig anstoßen kann. Das folgende Script holt sich
in einer Schleife alle User und legt für diese dann ggfs. eine
persönliche mySite an. Die ersten drei Zeilen müssen hierbei an das
SharePoint angepasst werden.
$mysiteHostUrl = "https://URL DES MYSITE HOST"
$personalSiteGlobalAdmin = "USERNAME ADMIN"
$personalSiteGlobalAdminNot ="EMAILADRESSE ADMIN"
$personalSiteGlobalAdminDisplayName = "FarmAdmin"
$mysite = Get-SPSite $mysiteHostUrl
$context = [Microsoft.Office.Server.ServerContext]::GetContext($mysite)
$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
$AllProfiles = $upm.GetEnumerator()
foreach($profile in $AllProfiles){
$DisplayName = $profile.DisplayName
$AccountName = $profile[[Microsoft.Office.Server.UserProfiles.PropertyConstants]
::AccountName].Value
if($profile.PersonalSite -eq $Null){
write-host "Creating personel site for ", $AccountName
$profile.CreatePersonalSite()
#Adding an extra admin for personel sites
$pweb = $profile.PersonalSite.OpenWeb()
$pweb.AllUsers.Add($personalSiteGlobalAdmin,$personalSiteGlobal
AdminNot,$personalSiteGlobalAdminDisplayName,$null);
$padm= $pweb.AllUsers[$personalSiteGlobalAdmin];
$padm.IsSiteAdmin = $true;
$padm.Update();
$pweb.Dispose();
write-host "Personal Site Admin has assigned"
}
else
{
write-host $AccountName ," has already personal site"}
}
$mysite.Dispose();
Keine Kommentare:
Kommentar veröffentlichen