2012-10-05 102 views
0

我正在以SYSTEM帳戶運行的Windows服務運行PowerShell腳本。爲了增加權限,我讓用戶選擇一個用戶,我稍後使用LogonUser方法模擬整個線程。c#中的Powershell和權限

這可以工作,以便我可以訪問網絡驅動器,當我嘗試在PowerShell中打印當前用戶時也可以使用。

但我有一個情況下,當它不工作:

一個例子是試圖加載交易所管理單元和運行cmdlet的用戶:獲取MailboxPermission

然後,他得到的錯誤:術語「的Get- MailboxPermission'不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然後重試。術語'Get-MailboxPermission'不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然後重試。

我猜這是權限問題,我想知道是否還有其他需要更改爲RunSpace等來獲得增加的權限?任何其他想法?

回答

0

哪個PowerShell版本?

看起來你沒有添加交換管理單元。嘗試之前運行此命令:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin 

,或通過代碼,在運行空間的初始化,使用此代碼:

RunspaceConfiguration rsConfig = RunspaceConfiguration.Create(); 
PSSnapInException snapInException = null; 
PSSnapInInfo info = rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException); 
Runspace myRunSpace = RunspaceFactory.CreateRunspace(rsConfig); 
myRunSpace.Open(rsConfig); 

閱讀這篇文章,瞭解更多信息: http://msdn.microsoft.com/en-us/library/exchange/bb332449(v=exchg.80).aspx

+0

該腳本時手動運行它 - 但不是在服務上下文中加載時(即使它是模擬的)。 – serializer

+0

您是否嘗試在其他命令之前運行我寫的*命令? –