2015-02-18 61 views
0

加載ActiveDirectory模塊我試圖遠程執行一些非常簡單的Powershell/ActiveDirectory cmdlts,但無法加載ActiveDirectory模塊。我嘗試了幾個不同的東西,包括在加載模塊的遠程服務器上註冊一個遠程shell,但是我無法讓它工作。C#無法爲Powershell遠程使用

工作原理:遠程設置工作。我的C#代碼可以連接到遠程計算機並執行Exchange命令,如New-Mailbox。但是,我無法執行類似的命令Add-ADGroupMember

如果我登錄到遠程機器,我可以驗證所有Powershell cmdlts都可用,對於Exchange和AD。所以我知道他們在遠程機器上工作,如果我只是登錄到Powershell。

試圖執行Add-ADGroupMember給我錯誤,它不被識別爲cmdlet。這表明,對我而言,ActiveDirectory模塊未加載。但是,如果我嘗試導入它,就像這樣:

ps.Commands.AddCommand("Import-Module").AddArgument("ActiveDirectory"); 

此命令失敗,出現錯誤,術語「導入模塊」也沒有一個公認的cmdlet的。

我也嘗試連接到專門加載ActiveDirectory模塊的shellURI,但它無法連接。我在WS-Management目錄中發現資源URI未找到的錯誤。

這也帶來了另一個奇怪的事情;我不明白爲什麼我無法連接到遠程Powershell中列出的資源URI。如果我做了PS_GetSessionConfiguration,我看到以下內容:

AdExchange的(我自己的自定義) Microsoft.Powershell Microsoft.Powershell.Workflow Microsoft.Powershell32 Microsoft.ServerManager

但是,我無法連接到任何那些。當我設置我的連接信息對象時,我必須使用以下URI:

string shell = "http://schemas.microsoft.com/powershell/Microsoft.Exchange"; 

所有其他URI失敗。這是爲什麼?

總之,這裏的一些代碼:

using (Runspace runspace = RunspaceFactory.CreateRunspace(connInfo)) 
      { 

       runspace.Open(); 

       using (PowerShell ps = PowerShell.Create()) 
       { 
        ps.Runspace = runspace; 

        Pipeline pipe = runspace.CreatePipeline(); 

        ps.Commands.AddCommand("Import-Module").AddArgument("ActiveDirectory"); 
        ps.Invoke(); 

        ps.Commands.AddCommand(CreateNewUserCommand()); 
        ps.Commands.AddCommand(CreateAddGroupCommand("FacnStaff")); 
        //ps.Commands.AddCommand(CreateAddGroupCommand("AllFacStaff")); 
        //ps.Commands.AddCommand(CreateAddGroupCommand("PasswordManagerFacStaff")); 

        results = ps.Invoke(); 
       } 
      } 

的第一個命令,CreateNewUserCommand,做一個 「新郵箱」。如果我註釋掉其他命令,這將獨立工作。

其他命令都做這樣的一些變化:

private Command CreateAddGroupCommand(string group) 
     { 
      var command = new Command("Add-ADGroupMember"); 
      command.Parameters.Add("Identity", group); 
      command.Parameters.Add("Members", _username); 

      return command; 
     } 

所以我的問題:

1)I不能運行AD PowerShell命令遠程 2)I不能遠程加載ActiveDirectory的模塊 3 )我無法連接到不同的Powershell外殼配置

請幫忙

回答

0

他們所有的症狀都指向被限制爲NoLanguage模式的遠程shell。對於Exchange遠程會話,這是正常的。您可以在該會話中執行的唯一一件事是Exchange cmdlet。沒有其他cmdlet甚至基本語言元素可用(您甚至不能創建變量)。

Shay Levy寫了一篇文章描述你重新配置這些會話的全語言模式來解決這些限制。

get-full-control-over-your-exchange-remote-powershell-session