C# 如何使用命令行在远程计算机上回收应用程序池

C# 如何使用命令行在远程计算机上回收应用程序池,c#,windows,iis-7,vbscript,application-pool,C#,Windows,Iis 7,Vbscript,Application Pool,我尝试从命令行运行的vbs文件中包含以下内容: strServerName = "ServerName" strAppPoolName = "DefaultAppPool" set objAppPools = GetObject("IIS://" & strServerName & "/w3svc/AppPools/" & strAppPoolName & "") objAppPools.Rec

我尝试从命令行运行的vbs文件中包含以下内容:

strServerName = "ServerName"
strAppPoolName = "DefaultAppPool"
set objAppPools = GetObject("IIS://" & strServerName 
                                  & "/w3svc/AppPools/" & strAppPoolName & "")
objAppPools.Recycle()
然而,当我从cmd行运行vbs时,我得到以下错误:

Microsoft VBScript运行时错误:ActiveX组件无法创建对象:“获取对象”_

我在本地机器上运行XP,远程机器有IIS 7


如何使其工作?

虽然不是vbs文件命令,但可以让vbs执行此命令行

appcmd recycle apppool /apppool.name:string
变量字符串是要回收的应用程序池的名称。例如,要回收名为Marketing的应用程序池,请在命令提示下键入以下内容,然后按ENTER键:

appcmd recycle apppool /apppool.name:Marketing
取自


如果它离您想要的太远,那么我很抱歉。

我不确定具体的vb脚本,但我建议使用“appcmd”()

  • %windir%\system32\inetsrv
    添加到您的路径(如果尚未添加)
  • 在命令提示符中键入:
    appcmd recycle apppool“apppool\u name”

  • 您是否已在远程计算机上安装并启用IIS7 WMI提供程序

    我想它能满足你的大部分需求


    这包括pre-req和如何浏览可用的管理选项…确保您可以通过一些调整重置应用程序池…

    我刚刚从Windows XP机器到Windows 2008R2机器进行了尝试。成功了。所以你肯定走对了方向

    如果您正在寻找其他方法,请在命令提示符下尝试此方法。当错误消息不起作用时,它至少会更具体一些

    wmic /namespace:"\\root\MicrosoftIISv2" /node:"**serverName**" path IISApplicationPool where (name like '%**DefaultAppPool**%') call recycle
    

    我刚刚偶然发现了这个问题,下面是解决方法: 有一个名为PsExec的小型windows工具,它基本上为您提供了命令行远程访问,您可以从那里使用apppool。您可以从C运行这个命令#


    工具如下:

    使用powershell命令运行它。例如:

    Invoke-WMIMethod Recycle -Path "IIsApplicationPool.Name='W3SVC/APPPOOLS/apppoolname'" -Computer "WIN-Computername" -Namespace root\MicrosoftIISv2 -Authentication PacketPrivacy
    
    其中apppoolname是您的应用程序池名称


    其中WIN Computername是您的远程/本地服务器名称

    使用powershell在服务器上远程执行命令:

    Invoke-Command -ComputerName <YOUR_IIS_SERVER_NAME> -ScriptBlock { Restart-WebAppPool -Name <YOUR_APP_POOL_NAME> }
    
    Invoke命令-ComputerName-ScriptBlock{Restart WebAppPool-Name}
    
    尝试了所有操作后,以下命令对我有效

    cd%windir%\system32\inetsrv

    appcmd.exe停止站点/site.name:“test1.com”

    appcmd.exe开始站点/site.name:“test1.com”


    显然,在此之前,您还将运行一些ssh远程命令

    未看到远程服务器要求。很公平,也许不对。Powershell脚本可能是最好的方式。很抱歉,这里没有,Powershell??Powershell是一种新的(ish)脚本语言,类似于vbs(x infinity),基本知识可以在这里找到。你可能也想要这样的东西;某些公司系统管理员可能认为PsExec存在安全漏洞。在公司设备上运行前获得许可。
    Invoke-Command -ComputerName <YOUR_IIS_SERVER_NAME> -ScriptBlock { Restart-WebAppPool -Name <YOUR_APP_POOL_NAME> }