2012-07-17 2 views
7

Sto lavorando al provisioning multi tenant in sharepoint e ho difficoltà a capire se è possibile impostare il percorso della directory dell'account utente per una sottoscrizione al sito utilizzando lo sharepoint modello a oggetti. So che questo può essere fatto attraverso PowerShell con il seguente cmdlet.Configurazione di un percorso di directory dell'account utente delle sottoscrizioni del sito sharepoint con il modello dell'oggetto

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

Finora ho ottenuto il seguente codice che creerà un abbonamento sito con un sito predefinito e feature pack. Tuttavia, non riesco a capire come impostare il percorso per l'OU degli utenti nella directory attiva.

//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); 

Qualche suggerimento?

+1

Hai provato a utilizzare il reflection sul comando CommandShell per vedere che tipo di codice utilizza? –

risposta

1

Come suggerito da Rikard, ho usato il riflesso per te.

Set-SPSiteSubscriptionConfig esegue le seguenti operazioni:

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(); 
    } 

Come si può vedere si utilizza il metodo GetAdminProperties per ottenere le proprietà di amministrazione della SPSiteSubscriptionManager. Quindi procede e aggiorna lo SPSiteSubscriptionProperty all'interno della raccolta adminProperties con il valore "UserAccountDirectoryPath".

Tutto quello che devi fare ora è impostare anche questo e il gioco è fatto. È possibile utilizzare un programma come ILSpy per esaminare il codice dei comandi di PowerShell di SharePoint. In questo caso avresti potuto trovare il codice in Microsoft.SharePoint.PowerShell.SPCmdletSetSiteSubscriptionConfig.

+1

Grazie mille, abbiamo finito con il dover supportare SP2010 e 2013 con il nostro assembly, quindi abbiamo deciso di attenerci ai cmdlet di PowerShell indipendentemente. Tuttavia, sono sicuro che ce ne saranno altri che ne faranno uso. Grazie ancora –

+0

Solo per essere sicuri ho controllato anche SP2013 - stesso codice. Saresti altrettanto sicuro usando questo codice per la nuova versione :-) –