是否可以从命令行在另一台计算机上回收IIS7应用程序池?
我找到了APPCMD(appcmd recycle apppool my-app-pool
),但它只能在运行它的主机AFAICT上运行。
我听说有一个谣言可能使用Powershell来实现,但是对此我一无所知,而且我显然不太擅长使用它。
如果有的话,我正在使用Vista / Server 2008。
编辑:我发现有人称WinRM本身可以运行APPCMD,但我不确定具体如何。
是否可以从命令行在另一台计算机上回收IIS7应用程序池?
我找到了APPCMD(appcmd recycle apppool my-app-pool
),但它只能在运行它的主机AFAICT上运行。
我听说有一个谣言可能使用Powershell来实现,但是对此我一无所知,而且我显然不太擅长使用它。
如果有的话,我正在使用Vista / Server 2008。
编辑:我发现有人称WinRM本身可以运行APPCMD,但我不确定具体如何。
Answers:
肯,如果这是从CMD运行的,则可以使用PSExec来完成。这不需要在要访问的服务器上进行安装。
只需将zip的内容复制到要从其进行远程复制的计算机的System32文件(不包括ELUA或DLL文件)中。
然后输入CMD
类型
Psexec \\{Computer Name of ISS7 Server} %systemroot%\System32\inetsrv\appcmd recycle apppool my-app-pool
如果您不在域管理员帐户的同一域上,则需要输入凭据以进行管理访问。有关更多信息,只需在不带参数的命令行中键入psexec。
Psexec \\computer c:\windows\system32\inetsrv\appcmd.exe" recycle apppool AppPoolName
要从PowerShell远程进行操作,您需要使用PowerShell远程处理或使用WMI。
使用Invoke-WMIMethod PowerShell cmdlet实际上非常简单,但是您必须指定-Authentication PacketPrivacy
...,如果需要指定其他凭据,则可以使用参数来完成此操作-Credential (Get-Credential)
……这是一个示例:
$pc = "serverName"
## List the app pools, note the __RELPATH of the one you want to kill:
Get-WMIObject IISApplicationPool
-Computer $pc
-Namespace root\MicrosoftIISv2
-Authentication PacketPrivacy
## Recycle a specific one:
$Name = "W3SVC/APPPOOLS/ASP.NET v4.0 Classic" ## This is the Name from above
$Path = "IISApplicationPool.Name='$Name'" ## This is the __RELPATH
Invoke-WMIMethod Recycle
-Path $Path
-Computer $pc
-Namespace root\MicrosoftIISv2
-Authentication PacketPrivacy
我写了一个很好的函数来包装所有内容:http : //poshcode.org/2466
在PowerShell中回收AppPool
在此的示例:MSExchangeSyncAppPool
$appPool = Get-WmiObject -Authentication PacketPrivacy -Impersonation Impersonate -ComputerName (hostname) -namespace "root/MicrosoftIISv2" -class IIsApplicationPool | Where-Object {$_.Name -eq "W3SVC/AppPools/MSExchangeSyncAppPool" }
$appPool.Recycle()