使用c#将参数传递给命令提示符

时间:2012-07-18 13:46:19

标签: c#

我是C#的新手,我正在尝试在本地计算机上禁用或启用用户,如下面的代码所示。我正在创建一个exe并提示用户输入他们想要启用或禁用的用户名。

现在我想将参数传递给命令提示符并禁用或启用用户。例如:> cmd.exe John Disable。

如何使用c#将参数传递给命令提示符并使用下面相同的代码启用或禁用用户?

class EnableDisableUsers
    {
        static void Main(string[] args)
        {
                Console.WriteLine("Enter user account to be enabled or disabled");
                string user = Console.ReadLine();
                Console.WriteLine("Enter E to enable or D to disable the user account");
                string enableStr = Console.ReadLine();
                bool enable;

            if (enableStr.Equals("E") || enableStr.Equals("e"))
            {


                PrincipalContext ctx = new PrincipalContext(ContextType.Machine);

                // find a user
                UserPrincipal username = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, user);

                if (user != null)
                {
                    try
                    {
                        //Enable User
                        username.Enabled = true;
                        username.Save();
                        Console.WriteLine(user + " Enabled");
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Operation failed - Username is not valid", e.Message);
                    }
                }
                Console.ReadLine();
            }
            else if (enableStr.Equals("D") || enableStr.Equals("d"))
            {


                PrincipalContext ctx = new PrincipalContext(ContextType.Machine);

                // find a user
                UserPrincipal username = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, user);

                if (user != null)
                {
                    try
                    {
                        //Disable User
                        username.Enabled = false;
                        username.Save();
                        Console.WriteLine(user + " Disabled");
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Operation failed - Username is not valid", e.Message);
                    }
                }
                Console.ReadLine();
            }
        }
    }

6 个答案:

答案 0 :(得分:1)

ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.Arguments = "/c ping " + machine;
processStartInfo.FileName = "cmd.exe";
Process process = new Process();
process.StartInfo = processStartInfo;
process.Start();

以下是在控制台中使用ping命令的示例。您可以添加其他选项,例如强制它不打开gui等。

答案 1 :(得分:0)

您可以使用Environment.CommandLine来读取命令行参数或Environment.GetCommandLineArgs()方法。

 String[] arguments = Environment.GetCommandLineArgs();

答案 2 :(得分:0)

看看

string[] args

您的命令行参数位于字符串数组中。

答案 3 :(得分:0)

发送到您的程序的参数存储在args

static void Main(string[] args) 

答案 4 :(得分:0)

使用:

 switch (args[x])
 {
      .... 

  }

例如

 switch (args[x])
 {
  #region --loop
  case "--loop":               
      x = -1;
      break;
 #endregion

 #region --test-net
     case "--test-net":
          Task isAlive = Task.Factory.StartNew(() =>
          {
              bool alive = tlib.CheckForInternetConnection();
              if (!alive)
              {
                  while (!alive)
                  {
                      Console.WriteLine("No connectivity found.");
                      System.Threading.Thread.Sleep(9000);
                      alive = tlib.CheckForInternetConnection();
                  }
              }
              else
              {
                   //TODO: Add alive code here 
              }
          });
          isAlive.Wait();
          break;

          #endregion
}

这允许你说prog.exe --test-net并运行该特定代码。

- 编辑 -

使用多个args,您可以将命令串在一起,在本例中为

prog.exe --test-net --loop 

你可以拥有任意数量的args。如果你想为arg使用人工输入,你总是可以控制args的数量并抓住args [x + 1]来获取要禁用/启用的人的名字。

这假设您的案例陈述有两种情况:例如--enable和--disable。然后你可以调用程序,如:

prog.exe --enable John

答案 5 :(得分:0)

这是在你的主?如果是这样,您将引用字符串[] args:

中的命令行参数
static void Main(string[] args)

您可以在此处查看一些示例:http://msdn.microsoft.com/en-us/library/aa288457(v=vs.71).aspx