2013-04-15 43 views
1

我試圖以編程方式導出傳輸規則。c#編程導出傳輸規則 - 交換2010

我的代碼適用於像get-exchangeserver和get-TransportRule這樣的簡單命令,但如果我嘗試將命令導入規則給某個文件,它會給出的錯誤是給定的命令無法識別爲cmdlet腳本。

我的代碼如下(我曾嘗試給誰是外匯管理Windows身份驗證或用戶的身份驗證):

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(serverUri, SHELL_URI, creds); 
try 
{ 
    using (Runspace rs = RunspaceFactory.CreateRunspace(connectionInfo)) 
    { 
     PowerShell psh = PowerShell.Create(); 
     psh.Runspace = rs; 
     rs.Open(); 
     psh.AddCommand("$file = Export-TransportRuleCollection -ExportLegacyRules" +"Set-Content -Path " + @"C:\LegacyRules3.xml" + "-Value file.FileData -Encoding Byte"); 
     psh.Invoke(); 

我使用C#和Exchange Server 2010,PowerShell的版本是1.0。遠程操作系統是Winodws 7.

任何想法我應該做什麼修正?

回答

0

從對出口TransportRuleCollection文檔:

在Exchange 2010中,您必須將規則集合導出到一個變量,然後使用Set-Content cmdlet將數據寫入到一個XML文件中。有關更多信息,請參閱Set-Content。

http://technet.microsoft.com/en-us/library/bb124410(v=exchg.141).aspx

+0

嗨,感謝您的答覆,如果你看到我已經使用該cmdlet,但不能讓它通過編碼工作,想知道我怎麼可以拆分命令,以使我的代碼通過C#代碼工作。問候,Amit – user2281729

+0

您確定您使用的憑據屬於具有必要權限的Exchange RBAC組嗎?如果他們不交流,則不會給他們該會話中使用的cmdlet。 – mjolinor

+0

看起來您正在連接到Exchange遠程會話。這是一個受限的,無語言的會話,無法訪問Exchange服務器上的文件系統。通常使用這些會話創建本地會話,然後連接並將遠程會話功能導入到本地會話中(隱式遠程處理)。 – mjolinor