[英]Windows Server 2012 - Access to registry denied when running powershell scripts from C#
[英]Access Denied running Remote PowerShell but only when ran from dev server, works fine localy
我正在嘗試對我們的交換服務器運行遠程PowerShell命令,但是當從我們的開發服務器運行該命令時,出現“ Access Is Denied
錯誤。 當我在本地計算機上運行該代碼時,它可以正常工作,甚至可以遠程到開發服務器並運行PowerShell命令,並使連接完全正常。 我需要幫助弄清楚為什么僅從開發服務器運行代碼時為什么會出現“ Access Is Denied
錯誤。
public static void CreateEmailBox(string samAccountName)
{
var securedPassword = new SecureString();
foreach (char character in ConfigurationManager.AppSettings["ServiceAccountPassword"]) { securedPassword.AppendChar(character); }
var loginInfo = new PSCredential(ConfigurationManager.AppSettings["ServiceAccountUser"], securedPassword);
var connection = new WSManConnectionInfo(new Uri("http://exch-svr.domain.local/powershell"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", loginInfo);
connection.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
using (var runspace = RunspaceFactory.CreateRunspace(connection))
{
using (var powershell = PowerShell.Create())
{
powershell.AddCommand("enable-mailbox");
powershell.AddParameter("Identity", samAccountName);
powershell.AddParameter("Database", "Mailbox Database 4");
runspace.Open();
powershell.Runspace = runspace;
powershell.Invoke();
runspace.Close();
}
}
}
問題出在密碼,以及密碼如何作為安全字符串存儲。
安全字符串在計算機之間是不同的,因為用於加密/解密密碼的加密密鑰在每台計算機上都不同。
您要么需要使用共享密鑰,要么為要從中運行共享密鑰的每台計算機存儲一個單獨的安全字符串。
有關如何在計算機之間傳遞安全字符串的更多信息,請參見我的更詳細的答案: ConvertTo-SecureString在不同的服務器上提供不同的體驗
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.