7

我正在 sharepoint 中进行多租户配置,我无法确定是否可以使用 sharepoint 对象模型为站点订阅设置用户帐户目录路径。我知道这可以通过 powershell 使用以下 cmdlet 来完成。

    $sub = New-SPSiteSubscription 
    $sub | Set-SPSiteSubscriptionConfig -UserAccountDirectoryPath "OU=AlpineBikeStore,OU=Hosting,DC=contoso,DC=com" -FeaturePack "50976ac2-83bb-4110-946d-95b4b6e90d42" -Confirm:$false 

到目前为止,我已经获得了以下代码,它将创建一个具有默认站点和功能包的站点订阅。但是,我不知道如何在活动目录中设置用户 OU 的路径。

    //Create a default admin site for this tenant
    var site = new SPSite("https://contoso.com/", userToken);

    //Create the subscription and assign the default admin site to it.
    var sub = SPSiteSubscription.Create();
    sub.Add(site);

    //Get the feature pack and assign it to the subscription
    var featurePacks = SPSiteSubscriptionSettingsManager.Local.GetAllFeaturePacks();
    var pack = featurePacks.SingleOrDefault(x => x.Id == Guid.Parse("50976ac2-83bb-4110-946d-95b4b6e90d42"));
    SPSiteSubscriptionSettingsManager.Local.AssignFeaturePackToSiteSubscription(pack, sub);

有什么建议么?

4

1 回答 1

1

正如 Rikard 建议的那样,我为您使用了反射。

Set-SPSiteSubscriptionConfig执行以下操作:

    if (this.m_UserAccountDirectoryPathSpecified)
    {
        SPSiteSubscriptionPropertyCollection adminProperties = this.m_SettingsManager.GetAdminProperties(this.m_ResolvedIdentity);
        if (!string.IsNullOrEmpty(this.UserAccountDirectoryPath))
        {
            adminProperties.SetValue("UserAccountDirectoryPath", this.UserAccountDirectoryPath);
        }
        else
        {
            adminProperties.Remove("UserAccountDirectoryPath");
        }
        adminProperties.Update();
    }

如您所见,它使用GetAdminProperties方法来获取SPSiteSubscriptionManager. 然后它继续并SPSiteSubscriptionProperty使用 value 更新 adminProperties 集合内部"UserAccountDirectoryPath"

你现在需要做的就是设置它,你就完成了。您可以使用ILSpy等程序来查看 SharePoint Powershell 命令行开关的代码。在这种情况下,您可以在 Microsoft.SharePoint.PowerShell.SPCmdletSetSiteSubscriptionConfig.

于 2012-11-20T08:11:50.163 回答