如何使用PowerShell脚本在IIS中启动和停止应用程序池

时间:2016-04-13 13:10:26

标签: .net powershell iis

我想使用powershell脚本在IIS中启动和停止应用程序池。我试着写剧本,但我没有得到这个。

6 个答案:

答案 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-WebAppPoolStop-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)

来自微软文档。 https://docs.microsoft.com/en-us/powershell/module/webadminstration/restart-webapppool?view=winserver2012-ps

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