2 回答

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
這可以在不調(diào)用 powershell 的情況下完成。這是否有用取決于您要做什么。
var user = "username";
var pass = new System.Security.SecureString();
foreach (char c in "password")
{
pass.AppendChar(c);
}
var cred = new System.Management.Automation.PSCredential(user, pass);

TA貢獻(xiàn)2019條經(jīng)驗 獲得超9個贊
至于你嘗試過的:
您沒有將 PowerShell 命令正確轉(zhuǎn)換為 PowerShell SDK 調(diào)用。具體來說,您添加參數(shù)的方式不正確:
ps.AddArgument("System.Management.Automation.PSCredential ("+user+", (ConvertTo-SecureString "+pass+" –ASPlainText –Force))");
您必須通過逐一添加參數(shù)
.AddArgument(<val>)
,或者最好通過) 作為命名參數(shù).AddParameter(<name>, <val>)
。您不能使用嵌入式 PowerShell 命令作為參數(shù)。
如果我們將獲取實例的問題SecureString
放在一邊并僅使用虛擬實例,則您的語句將如下所示:
ps.AddCommand("New-Object") ??.AddParameter("TypeName",?"System.Management.Automation.PSCredential") ??.AddParameter("ArgumentList",?new?object[]?{?user,?new?System.Security.SecureString()?});
請注意參數(shù)名稱的使用以及參數(shù)-ArgumentList
必須如何作為數(shù)組傳遞。
如果您確實需要通過 SDK執(zhí)行PowerShell 代碼,請改用該.AddScript()
方法,但請注意,您只能傳遞包含要執(zhí)行的代碼的單個字符串(請注意使用插值 C# 字符串$"..."
來嵌入 C# 變量值):
ps.AddScript( ??$"New-Object?PSCredential?\"{user}\",?(ConvertTo-SecureString?\"{pass}\"?–AsPlainText?–Force)" ??);
警告:與使用 - 添加的命令不同.AddCommand()
,.AddScript()
使用 - 添加的命令在執(zhí)行時總是默默失敗.Invoke()
,不會發(fā)生異常;你必須檢查ps.HadErrors
并ps.Streams.Error
檢查錯誤。相比之下,.AddCommand()
如果目標(biāo)命令報告(語句)終止錯誤,則會拋出異常(盡管這種情況很少見;一個示例是傳遞無效的參數(shù)名稱)。
- 2 回答
- 0 關(guān)注
- 127 瀏覽
添加回答
舉報