之前写过一篇文章,使用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的一键操作。