一键操作IIS

之前写过一篇文章,使用WinForm一键部署站点网站,这个任务的前提是服务器安装了IIS,那么如果没有安装IIS,是否也可以一键安装IIS呢?这篇文章就是为了解决这个问题。

网上找了很多方法,最简单的办法就是执行DOS命令,下面是执行DOS命令的方法:

    public class ExecuteDOS
    {
        /// <summary>
        /// 执行DOS命令,返回DOS命令的输出
        /// </summary>
        /// <param name="dosCommand">dos命令</param>
        /// <param name="milliseconds">等待命令执行的时间(单位:毫秒),
        /// 如果设定为0,则无限等待</param>
        /// <returns>返回DOS命令的输出</returns>
        public static string Execute(string command, int seconds)
        {
            string output = ""; //输出字符串
            if (command != null && !command.Equals(""))
            {
                Process process = new Process();//创建进程对象
                ProcessStartInfo startInfo = new ProcessStartInfo();
                startInfo.FileName = "cmd.exe";//设定需要执行的命令
                startInfo.Arguments = "/C " + command;//“/C”表示执行完命令后马上退出
                startInfo.UseShellExecute = false;//不使用系统外壳程序启动
                startInfo.RedirectStandardInput = false;//不重定向输入
                startInfo.RedirectStandardOutput = true; //重定向输出
                startInfo.CreateNoWindow = true;//不创建窗口
                process.StartInfo = startInfo;
                try
                {
                    if (process.Start())//开始进程
                    {
                        if (seconds == 0)
                        {
                            process.WaitForExit();//这里无限等待进程结束
                        }
                        else
                        {
                            process.WaitForExit(seconds); //等待进程结束,等待时间为指定的毫秒
                        }
                        output = process.StandardOutput.ReadToEnd();//读取进程的输出
                    }
                }
                catch
                {
                }
                finally
                {
                    if (process != null)
                        process.Close();
                }
            }
            return output;
        }
    }

有了执行DOS命令的代码,下面就是找到操作IIS的DOS命令了,代码如下:

        /// <summary>
        /// 执行DOS命令
        /// </summary>
        /// <param name="type">0:IIS7完全安装;1:IIS7安装;2:IIS7卸载;3:IIS7-FTP服务器 安装;4:IIS7-FTP服务器 卸载</param>
        /// <param name="seconds"></param>
        private void RunDOS(int type,int seconds)
        {
            string dos = "";
            switch (type)
            {
                case 0: // IIS7完全安装
                    dos = "start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;" +
                        "IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;" +
                        "IIS-ASPNET;IIS-ASPNET45;IIS-NetFxExtensibility45;NetFx4Extended-ASPNET45;IIS-NetFxExtensibility;" +
                        "IIS-ASP;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;" +
                        "IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-ODBCLogging;IIS-Security;" +
                        "IIS-BasicAuthentication;IIS-WindowsAuthentication;IIS-DigestAuthentication;IIS-ClientCertificateMappingAuthentication;" +
                        "IIS-IISCertificateMappingAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;" +
                        "IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;" +
                        "IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;" +
                        "WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI ";
                    break;
                case 1: // IIS7安装
                    dos = "start /w pkgmgr /iu:IIS-WebServerRole;WAS-WindowsActivationService;WAS-ProcessModel;";
                    break;
                case 2: // IIS7卸载
                    dos = "start /w pkgmgr /uu:IIS-WebServerRole;WAS-WindowsActivationService;WAS-ProcessModel ";
                    break;
                case 3: // IIS7-FTP服务器 安装
                    dos = "start /w pkgmgr /iu:IIS-FTPServer;IIS-FTPSvc;IIS-FTPExtensibility  ";
                    break;
                case 4: // IIS7-FTP服务器 卸载
                    dos = "start /w pkgmgr /uu:IIS-FTPServer;IIS-FTPSvc;IIS-FTPExtensibility ";
                    break;
                default:
                    break;
            }
            if (dos != "")
            {
                ExecuteDOS.Execute(dos, seconds);
            }
        }

以上就完成了IIS的一键安装和卸载等功能了,比较简单,有兴趣的可以继续深入不同版本IIS的一键操作。

 

posted @ 2020-04-28 15:21  云淡风轻~江哥  阅读(399)  评论(0编辑  收藏  举报