我想使用一个衬管命令来回收我的应用程序池,我可以将它放在我的powershell脚本中。我在PowerShell脚本中添加了以下代码:
Import-Module WebAdministration
$site = "Default Web Site"
$pool = (Get-Item "IIS:\Sites\$site"| Select-Object applicationPool).applicationPool
Restart-WebAppPool $pool
但我收到一个名称IIS不存在的错误。请指教
答案 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