簡體   English   中英

訪問拒絕運行遠程PowerShell,但僅當從開發服務器運行時才能正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM