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

时间:2013-10-10 08:03:05

标签: c# asp.net powershell active-directory automation

我使用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 keineBenutzerinteraktionunterstützt。 FürdenVersuch,die besttitigung anzufordern,wurde vom Host folgende Meldung verwendet:MöchtenSiediese Aktionwirklichausführen?

英文:

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

1 个答案:

答案 0 :(得分:1)

关于如何调用此命令的一些事情导致命令提示输入更多信息,但是您的C#引擎" host"没有实现允许PowerShell引擎提示用户获取更多信息的必需接口。我看到你输入了密码,但是这个命令的文档确实说:

  

如果为此参数指定用户名,则cmdlet会提示输入   密码。

我想知道你的PSCredential是否有些东西?