如何在 C# 中使用 System.Management.Automation 删除 ADUser

本文关键字:Management System Automation 删除 ADUser | 更新日期: 2023-09-27 18:34:54

我使用System.Management.Automation来处理Powershell和c#,我想使用Remove-ADUser命令,但我得到一个错误:这是我的代码。

public bool RemoveADUser(string sAMAccountName) { 
            Security key = new Security();
            try
            {
                ADPASSWORD = key.PasswordDecrypt("vnPYuGoPSvrSjDC+/5lUTQ==");
                //ADPASSWORD = "vnPYuGoPSvrSjDC+/5lUTQ==";
                SecureString SECUREADADMINPASSWORD = new SecureString();
                foreach (char x in sAMAccountName)
                {
                    SECUREADADMINPASSWORD.AppendChar(x);
                }
                SecureString pw = new SecureString();
                foreach (char x in ADPASSWORD)
                {
                    pw.AppendChar(x);
                }
                InitialSessionState initial = InitialSessionState.CreateDefault();
                Environment.SetEnvironmentVariable("ADPS_LoadDefaultDrive", "0");
                initial.ImportPSModule(new string[] { "ActiveDirectory" });
                PSCredential crend = new PSCredential(ADNAME, pw);
                using (Runspace runspace = RunspaceFactory.CreateRunspace(initial))
                {
                    runspace.Open();
                    using (Pipeline p = runspace.CreatePipeline())
                    {
                        Command command = new Command("Remove-ADUser");
                        command.Parameters.Add("Identity", sAMAccountName);
                        command.Parameters.Add("Credential", crend);
                        p.Commands.Add(command);
                        p.Invoke();
                        return true;
                    }
                }
            }
            catch (Exception)
            {
                return false;
            }
            finally
            {
            }
        }

代码转到 p.Invoke((; 但随后我收到以下消息:

在德语中:

Fehler in einem Befehl mit einer Eingabeaufforderung.Vom Hostprogramm oder Befehlstyp wird keine Benutzerinteraktion unterstützt.Für den Versuch, die Bestätigung anzufordern, wurde vom Host folgende Meldung verwendet: Möchten Sie diese Aktion wirklich ausführen?

英文版:

带有命令提示符的命令中出错。主机程序或命令类型不支持用户交互。对于实验,为了请求确认,来自所用主机的以下消息是:是否要执行此操作?

如何在 C# 中使用 System.Management.Automation 删除 ADUser

调用此命令的方式导致命令提示输入详细信息,但 C# 引擎"主机"未实现允许 PowerShell 引擎提示用户输入详细信息的所需接口。 我看到您输入了密码,但此命令的文档确实说:

如果为此参数指定用户名,该 cmdlet 将提示 密码。

我想知道你的PSCredential是否有什么问题?