是否可以从另一台机器上的命令行回收 IIS7 应用程序池?
我发现了 APPCMD(appcmd recycle apppool my-app-pool
),但据我所知,它只能在运行它的主机上运行。
我听到传言说可能有一种方法可以使用 Powershell 来实现这一点,但我对此一无所知,而且我显然不太擅长用 Google 搜索它。
如果重要的话,我正在使用 Vista / Server 2008。
编辑:我发现了一个叫做温控器有人声称它可以运行 APPCMD 本身,但我还不清楚具体如何运行。
答案1
答案2
要从 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
答案3
答案4
在 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()