使用Powershell脚本回收应用程序池

时间:2016-07-11 16:26:00

标签: powershell iis-7.5

我想使用一个衬管命令来回收我的应用程序池,我可以将它放在我的powershell脚本中。我在PowerShell脚本中添加了以下代码:

Import-Module WebAdministration

$site = "Default Web Site"

$pool = (Get-Item "IIS:\Sites\$site"| Select-Object applicationPool).applicationPool

Restart-WebAppPool $pool

但我收到一个名称IIS不存在的错误。请指教

7 个答案:

答案 0 :(得分:8)

我喜欢答案简短而简单,就像这样......

Restart-WebAppPool (Get-Website -Name <YourSiteName>).applicationPool

答案 1 :(得分:4)

您可以使用appcmd.exe

appcmd recycle apppool /apppool.name='MyAppPool'

您还可以检索相应的WMI实例并调用Recycle()方法:

$myAppPool = Get-WmiObject -Namespace root\WebAdministration -Class ApplicationPool -Filter "Name = 'MyAppPool'"
$myAppPool.Recycle()

答案 2 :(得分:2)

Import-Module WebAdministration

$site = "MySite"
$pool = (Get-Item "IIS:\Sites\$site"| Select-Object applicationPool).applicationPool

#Recycle the application pool:
Restart-WebAppPool $pool

答案 3 :(得分:1)

由于 WebAdministration 已经过时并且在 Powershell 7 下受到严重支持,以下是使用更新的 IISAdministration 模块的更新答案:

Import-Module IISAdministration
$pool = Get-IISAppPool -Name "DefaultAppPool"
$pool.Recycle()

如果您在配置文件中导入模块,您也可以将其作为两行或什至单行进行:

Import-Module IISAdministration
(Get-IISAppPool("DefaultAppPool")).Recycle()

请注意,访问 IISServerManager 对象需要管理权限。

答案 4 :(得分:0)

也许有人会发现这个也很有用:

Write-Host "App Pool Recycling Started...."
& $env:windir\system32\inetsrv\appcmd list apppools /state:Started /xml | & $env:windir\system32\inetsrv\appcmd recycle apppools /in 
Write-Host "App Pool Recycling Completed"

通过“运行”命令在AWS中为我工作。

答案 5 :(得分:0)

以下命令对我有用

invoke-command -computername servername -scriptblock {C:\Windows\System32\inetsrv\appcmd.exe recycle apppool "apppoolname"}

答案 6 :(得分:0)

我并非以管理员身份运行所有Powershell脚本-这很危险。 但是除非在管理员提示符下运行,否则appcmd.exe不可用。

如果您在常规的未提升的提示符下运行,此命令行将提示您提升高度:

Start-Process c:\windows\System32\inetsrv\appcmd.exe "recycle apppool /apppool.name:MyAppPool" -Verb RunAs