2012-11-05 3 views
0

J'essaie d'exécuter des commandes PowerShell sur un serveur SharePoint distant à partir d'une application de console C#. C'est le code que j'ai jusqu'ici. Il fonctionne sans erreurs mais ne fait rien. Qu'est-ce que je fais mal?C# Remote Powershell SharePoint 2010

Merci

nom du serveur

, mot de passe de nom d'utilisateur et l'URL ont été retirés

public static string RunScript() 
    { 

     Runspace remoteRunspace = null; 
     openRunspace("http://server/wsman", 
      "http://schemas.microsoft.com/powershell/Microsoft.PowerShell", 
      @"domain\user", 
      "password", 
      ref remoteRunspace); 
     try 
     { 
      StringBuilder stringBuilder = new StringBuilder(); 
      using (PowerShell powershell = PowerShell.Create()) 
      { 

       powershell.Runspace = remoteRunspace; 
       powershell.AddScript("Add-PsSnapin Microsoft.SharePoint.PowerShell"); 
       powershell.AddScript("enable-SPFeature -identity \"2dfc204b-e9da-4c6c-8b4f-c2f7c593ad4e\" -url sharepointsite -Confirm:$False"); 
       powershell.Invoke(); 
       Collection<PSObject> results = powershell.Invoke(); 
       remoteRunspace.Close(); 
       foreach (PSObject obj in results) 
       { 
        stringBuilder.AppendLine(obj.ToString()); 
       } 
      } 

      return stringBuilder.ToString(); 
     } 
     catch (Exception e) 
     { 

      return ""; 

     } 


    } 

    public static void openRunspace(string uri, string schema, string username, string livePass, ref Runspace remoteRunspace) 
    { 
     System.Security.SecureString password = new System.Security.SecureString(); 
     foreach (char c in livePass.ToCharArray()) 
     { 
      password.AppendChar(c); 
     } 
     PSCredential psc = new PSCredential(username, password); 
     WSManConnectionInfo rri = new WSManConnectionInfo(new Uri(uri), schema, psc); 
     rri.AuthenticationMechanism = AuthenticationMechanism.Kerberos; 
     rri.ProxyAuthentication = AuthenticationMechanism.Negotiate; 
     remoteRunspace = RunspaceFactory.CreateRunspace(rri); 
     remoteRunspace.Open(); 
    } 
+0

Quelles sont les erreurs? –

+0

Vous avez appelé le 'Invoke' 2 fois, pourquoi? – mehrandvd

Répondre

1

Vous pouvez essayer de vérifier si vous avez accès aux bases de données de SharePoint, d'ajouter correctement composant logiciel enfichable dont vous avez besoin ShellAccess permission sur la base de données de configuration que je me souviens et les droits d'administrateur de ferme. Il est possible que votre script ne puisse pas ajouter de composant logiciel enfichable, donc je ne peux rien faire avec le modèle d'objet SharePoint.