Назад | Перейти на главную страницу

По умолчанию уведомления MySite по электронной почте отключены?

В SharePoint 2010 MySite EditProfile.aspx есть настройки для уведомлений по электронной почте:

[x] Notify me when someone leaves a note on my profile.
[x] Notify me when someone adds me as a colleague.
[x] Send me suggestions for new colleagues and keywords.

Select which e-mail notifications you want to receive. 

К сожалению, они по умолчанию проверяют все три параметра. Я хотел бы установить разные значения по умолчанию для всех пользователей, настоящих и будущих, и сделать так, чтобы они явно соглашались на них.

Есть ли способ сделать это? Идея просто выполнить SQL UPDATE, чтобы установить для свойства 5040 значение 7, терпит неудачу, потому что это свойство не существует по умолчанию в базе данных, и если SharePoint не может найти его в базе данных, по умолчанию устанавливается значение 0 (= все проверено).

У меня была аналогичная проблема, и я нашел аккуратную команду PowerShell, которая выглядит так, как будто она помогает Вот. Ниже приведен код из статьи в блоге, просто удалите комментарии и запустите.

Я сделал это в своей тестовой среде, и было несколько мелких ошибок, но все работало отлично! Единственное, для новых пользователей он будет включен по умолчанию, что не очень хорошо:

#Load the SharePoint snap-in
Add-PsSnapin Microsoft.SharePoint.PowerShell;

#Load the SharePoint assemblies
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server");
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles");

#Specify the MySite URL
$MySiteUrl = "http://sharepoint.yoursite.com/";

#Get the server context for the profile manager
$site = Get-SPSite $MySiteUrl;
$ServerContext = Get-SPServiceContext $site;
$UPManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServerContext);

#Count variables
$ucount = 0;

$enumProfiles = $UPManager.GetEnumerator();
"Total User Profiles available:" + $UPManager.Count
$count=0;

#Loop through the profile entries and update the property
#Recieve Instant Notifications - NGAllowMetaEmail (bool)
#24 Hour Digest Email - NGReceiveDigestEmail (bool)
#RSS NewsFeed Email - NGAllowRssEmail (bool)
#SharePoint Notification emails - SPS-EmailOptin (int)
#This field has 3 values one for each email type

foreach ($oUser in $enumProfiles)
{
    $count = $count + 1;
    $u = $oUser.Item("Accountname");
    Write-Output "($count):  Setting values for $u";

    $oUser["NGAllowMetaEmail"].Value = $false;
    $oUser["NGReceiveDigestEmail"].Value = $false;
    $oUser["NGAllowRssEmail"].Value = $false;
    $oUser["SPS-EmailOptin"].Value = 111; 

    $oUser.Commit();
} 

#Dispose of site object
$site.Dispose();