有人可以帮我从c#代码执行IISWeb.vbs命令,我试图用它来启动和停止远程IIS服务器(IIS 6.0)上的网站。
我尝试了其他选项,例如将DirectorServises与SyytemManagement或WMI一起使用,但在所有情况下代码都可以正常运行本地IIS服务器,但会显示远程服务器的错误。我收到远程服务器的“拒绝访问”错误
我已经拥有了同一个domian和网络区域中的所有服务器,并尝试使用具有管理权限的用户帐户,但没有任何东西适用于远程计算机,因此尝试使用IISWeb.vbs。
请注意,从我的开发机器上,当我从命令提示符运行时,我能够使用此IISWeb.vbs命令在远程计算机上停止和启动网站。所以绝对没有权限问题。 我正在使用的代码:
Process p = new Process();
p.StartInfo.FileName = "cscript.exe";
p.StartInfo.Arguments = "iisweb.vbs /stop w3svc/87257621 test /s servername /u userid /p password";
p.StartInfo.UseShellExecute = false;
p.Start();
p.WaitForExit();
int i= p.ExitCode;
令人惊讶的是,我没有收到任何错误,我得到返回代码'0',但网站没有停止。
请帮帮我。
答案 0 :(得分:0)
想出问题,代码试图找出c:\program files\Visual Studio\
内的iisweb.vbs文件.........并且无法找到它。所以我修改了代码,专门在C:\Windows\System32
位置查找iisweb.vbs文件,现在工作正常。
以下是在具有IIS 6.0的远程计算机上停止和启动网站的代码的工作版本。
ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = @"C:\WINDOWS\system32\cscript.exe";
psi.Arguments = @"C:\WINDOWS\system32\iisweb.vbs /stop w3svc/1 test /s ServerName /u UserId /p Password";
psi.RedirectStandardOutput = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
System.Diagnostics.Process listFiles;
listFiles = System.Diagnostics.Process.Start(psi);
System.IO.StreamReader myOutput = listFiles.StandardOutput;
listFiles.WaitForExit(2000);
if (listFiles.HasExited)
{
string output = myOutput.ReadToEnd();
//this.processResults.Text = output;
}