我想使用powershell脚本在IIS中启动和停止应用程序池。我试着写剧本,但我没有得到这个。
答案 0 :(得分:7)
您可以使用此
如果您的使用(PowerShell 2.0)导入Web管理模块
import-module WebAdministration
请先检查应用程序池的状态。 如果应用程序池已停止,则会出现异常。
停止应用程序池:
$applicationPoolName = 'DefaultAppPool'
if((Get-WebAppPoolState -Name $applicationPoolName).Value -ne 'Stopped'){
Write-Output ('Stopping Application Pool: {0}' -f $applicationPoolName)
Stop-WebAppPool -Name $applicationPoolName
}
启动应用程序池:
if((Get-WebAppPoolState -Name $applicationPoolName).Value -ne 'Started'){
Write-Output ('Starting Application Pool: {0}' -f $applicationPoolName)
Start-WebAppPool -Name $applicationPoolName
}
权限:您必须是" IIS管理员"的成员。基。强>
答案 1 :(得分:3)
目前,IISAdminstration模块主要取代了WebAdministration。因此,如果您使用的是Windows 10 / Server 2016,则可以使用Get-IISAppPool:
(Get-IISAppPool "name").Recycle()
答案 2 :(得分:1)
您必须使用Import-Module导入WebAdministration
模块,然后才能使用Start-WebAppPool和Stop-WebAppPool
答案 3 :(得分:1)
使用PowerShell停止应用程序池
Stop-WebAppPool -Name YourAppPoolNameHere
启动App Pool
Start-WebAppPool -Name YourAppPoolNameHere
您需要安装WebAdministration
模块,因此请使用此命令检查是否已使用该模块
Get-Module -ListAvailable
答案 4 :(得分:0)
您可以使用以下powershell脚本分别停止和停止所有应用程序池。下面的第二行提升权限。您可以排除它,而可以以管理员身份运行。
停止所有应用程序池脚本
Import-Module WebAdministration
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }
$AppPools=Get-ChildItem IIS:\AppPools | Where {$_.State -eq "Started"}
ForEach($AppPool in $AppPools)
{
Stop-WebAppPool -name $AppPool.name
# Write-Output ('Stopping Application Pool: {0}' -f $AppPool.name)
}
启动所有应用程序池脚本
Import-Module WebAdministration
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }
$AppPools=Get-ChildItem IIS:\AppPools | Where {$_.State -eq "Stopped"}
ForEach($AppPool in $AppPools)
{
Start-WebAppPool -name $AppPool.name
# Write-Output ('Starting Application Pool: {0}' -f $AppPool.name)
}
答案 5 :(得分:0)
Restart-WebAppPool 回收应用程序池。
这样您就不必考虑停止、等待和开始。
Import-Module WebAdministration
对于特定运行的 AppPool
$applicationPoolName = 'DefaultAppPool'
Get-ChildItem IIS:\AppPools | Where {$_.State -ne "Stopped" -and $_.name -eq $applicationPoolName} | Restart-WebAppPool
对于所有正在运行的 AppPools
Get-ChildItem IIS:\AppPools | Where {$_.State -ne "Stopped"} | Restart-WebAppPool