【发布时间】:2017-01-31 17:15:57
【问题描述】:
我正在编写一个二进制 cmdlet,我想接受 PSCredential 参数以使用提升的凭据。
[Parameter]
public PSCredential Credential { get; set; }
似乎明显缺乏这方面的文档 - 我只能找到如何从 C# 执行 PowerShell cmdlet,这不是我想要做的。
我下载了 SimpleImpersonation nuget 包以避免自己进行 Windows 模拟。
using (Impersonation.LogonUser("GLOBAL", "last.first", "mypassword", LogonType.Interactive))
{
foreach (ServerInfo server in Targets)
ProcessRecord();
}
当我检查System.Security.Principal.WindowsIdentity.GetCurrent().Name 时,用户是正确的,但是当我执行命令(例如ServerManager.OpenRemote(computerName))时,我收到UnauthorizedAccessException。如果我从以所需用户身份运行的 PowerShell 实例运行此代码,则 cmdlet 将完美执行。
对于如何在 C# 二进制 cmdlet 中使用 PSCredential 有任何线索吗?
【问题讨论】:
标签: c# powershell impersonation