2012-07-17 11 views
7

Estoy trabajando en el aprovisionamiento multiempresa en sharepoint y tengo problemas para averiguar si puede establecer la ruta del directorio de cuentas de usuario para una suscripción de sitio usando el punto compartido modelo de objeto Sé que esto se puede hacer a través de powershell con el siguiente cmdlet.Configuración de una ruta del directorio de cuentas de usuario de suscripciones de sitios sharepoint con el modelo de objetos

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

Hasta ahora tengo el siguiente código que creará una suscripción de sitio con un sitio predeterminado y un paquete de características. Sin embargo, no puedo encontrar la manera de establecer la ruta a la OU de los usuarios en el directorio activo.

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

¿Alguna sugerencia?

+1

¿Intentó usar la reflexión en el comando powershell para ver qué tipo de código usa? –

Respuesta

1

Como Rikard sugirió que use el reflejo para ti.

Set-SPSiteSubscriptionConfig realiza lo siguiente:

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

Como se puede ver que utiliza el método GetAdminProperties para obtener las propiedades de administración de la SPSiteSubscriptionManager. Luego continúa y solo actualiza el SPSiteSubscriptionProperty dentro de la colección adminProperties con el valor "UserAccountDirectoryPath".

Todo lo que necesita hacer ahora es configurar esto también y listo. Puede usar un programa como ILSpy para ver el código de los comandos de SharePoint Powershell. En este caso, podría haber encontrado el código en Microsoft.SharePoint.PowerShell.SPCmdletSetSiteSubscriptionConfig.

+1

Muchas gracias, terminamos necesitando soporte tanto para SP2010 como para 2013 con nuestro ensamblaje, así que decidimos seguir con los cmdlets de PowerCell. Sin embargo, estoy seguro de que hay otros que sacarán provecho de esto. Gracias de nuevo –

+0

Solo para estar seguro, también revisé SP2013 - mismo código. Estarías igual de seguro usando este código para la nueva versión :-) –

Cuestiones relacionadas