IIS에서 powershell 스크립트를 사용하여 응용 프로그램 풀을 시작하고 중지하는 방법
IIS에서 파워셸 스크립트를 사용하여 응용프로그램 풀을 시작하고 중지하려고 합니다.대본을 쓰려고 했는데 못 받았어요.
이거 쓰셔도 돼요.
사용(PowerShell 2.0)이 Web Administration 모듈을 가져오는 경우
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 Admins" 그룹.
요즘 IISA 관리 모듈은 대부분 Web Administration을 능가합니다.
따라서 Windows 10 / Server 2016을 사용하는 경우 Get-IISA AppPool을 다음과 같이 사용할 수 있습니다.
Import-Module IISAdministration
(Get-IISAppPool "name").Recycle()
PowerShell을 사용하여 앱 풀을 중지하려면 다음과 같이 하십시오.
Stop-WebAppPool -Name YourAppPoolNameHere
그리고 앱 풀을 시작하는 것.
Start-WebAppPool -Name YourAppPoolNameHere
당신은 필요할 것입니다.WebAdministration
모듈을 설치했으므로 이 명령으로 확인합니다.
Get-Module -ListAvailable
다음 파워셸 스크립트를 사용하여 모든 애플리케이션 풀을 중지 및 중지할 수 있습니다.아래 두번째 줄은 권한을 높입니다.이를 제외하고 관리자로 실행할 수 있습니다.
모든 애플리케이션 풀 스크립트 중지
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)
}
저는 애저 파이프라인에서 다음 코드를 사용합니다.
풀을 중지합니다.
Import-Module -Name 'C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministration.psd1';
$AppPoolName = 'DefaultAppPool';
$AppPoolState = (Get-WebAppPoolState -Name $AppPoolName).Value;
$WasStarted = $false;
$Timeout = [System.TimeSpan]::FromMinutes(1);
$StopWatch = New-Object -TypeName 'System.Diagnostics.Stopwatch';
$StopWatch.Start();
# Possible status: "Starting", "Started", "Stopping", "Stopped" and "Unknown".
while ($AppPoolState -ne 'Stopped') {
if ($AppPoolState -eq 'Started') {
$WasStarted = $true;
Stop-WebAppPool -Name $AppPoolName;
}
Start-Sleep -Seconds 2;
if ($StopWatch.Elapsed -gt $Timeout) {
throw New-Object -TypeName 'System.TimeoutException' -ArgumentList "Timeout of $($Timeout.TotalSeconds) seconds exceeded!";
}
$AppPoolState = (Get-WebAppPoolState -Name $AppPoolName).Value;
}
풀을 시작합니다.
Import-Module -Name 'C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministration.psd1';
$AppPoolName = 'DefaultAppPool';
$AppPoolState = (Get-WebAppPoolState -Name $AppPoolName).Value;
$WasStopped = $false;
$Timeout = [System.TimeSpan]::FromMinutes(1);
$StopWatch = New-Object -TypeName 'System.Diagnostics.Stopwatch';
$StopWatch.Start();
# Possible status: "Starting", "Started", "Stopping", "Stopped" and "Unknown".
while ($AppPoolState -ne 'Started') {
if ($AppPoolState -eq 'Stopped') {
$WasStopped = $true;
Start-WebAppPool -Name $AppPoolName;
}
Start-Sleep -Seconds 2;
if ($StopWatch.Elapsed -gt $Timeout) {
throw New-Object -TypeName 'System.TimeoutException' -ArgumentList "Timeout of $($Timeout.TotalSeconds) seconds exceeded!";
}
$AppPoolState = (Get-WebAppPoolState -Name $AppPoolName).Value;
}
변수들은$WasStarted
그리고.$WasStopped
는 이 예제에서 사용되지 않는 추가 정보이지만 새 버전 배포가 완료된 후 애플리케이션 풀을 재시작해야 하는지 여부를 결정하는 데 사용할 수 있습니다(이전에 이미 중지되었기 때문에).
당신은 수입해야 합니다.WebAdministration
Import-Module을 사용하여 모듈을 실행한 다음 Start-WebAppPool과 Stop-WebAppPool을 사용할 수 있습니다.
마이크로소프트 문서에서.https://learn.microsoft.com/en-us/powershell/module/webadminstration/restart-webapppool?view=winserver2012-ps
재시작-WebAppPool은 애플리케이션 풀을 재활용합니다.
그렇다면 굳이 정차를 생각하지 않고 기다렸다가 출발할 필요가 없습니다.
Import-Module WebAdministration
실행 중인 특정 AppPool의 경우
$applicationPoolName = 'DefaultAppPool'
Get-ChildItem IIS:\AppPools | Where {$_.State -ne "Stopped" -and $_.name -eq $applicationPoolName} | Restart-WebAppPool
실행 중인 모든 AppPool에 대해
Get-ChildItem IIS:\AppPools | Where {$_.State -ne "Stopped"} | Restart-WebAppPool
미치 포메리가 댓글로 언급한 것처럼 앱풀은 즉각적으로 멈추지 않습니다.이 때문에 내 CI 스크립트는 앱풀에서 여전히 사용 중인 디렉토리에 파일을 복사하지 못합니다.대신에, 난 다시 돌아갔습니다.appcmd
되는 는)다입니다.WebAdministration
풀이 실행되고 있는지 확인하는 모듈.
Import-Module WebAdministration
if ((Get-WebAppPoolState -Name PCSServer).Value -ne 'Stopped'){ C:\Windows\system32\inetsrv\appcmd stop apppool "PCSServer-WS" }
Expand-Archive -Path MBE.zip -DestinationPath $DEPLOY_PATH -Force
C:\Windows\system32\inetsrv\appcmd start apppool "PCSServer-WS"
저는 결국 이런 생각을 하게 됐습니다.
앱 풀을 중지하는 중:
- task: PowerShell@2
displayName: Stop App Pool
inputs:
targetType: 'inline'
script: |
$applicationPoolName = '$(MySite)AppPool'
if((Get-WebAppPoolState -Name $applicationPoolName).Value -ne 'Stopped')
{
Write-Output ('Stopping Application Pool: {0}' -f $applicationPoolName)
Stop-WebAppPool -Name $applicationPoolName
Start-Sleep -Seconds 2
}
앱 풀을 시작하는 중:
- task: PowerShell@2
displayName: Start App Pool
inputs:
targetType: 'inline'
script: |
$applicationPoolName = '$(MySite)AppPool'
if((Get-WebAppPoolState -Name $applicationPoolName).Value -ne 'Started')
{
Start-Sleep -Seconds 2
Write-Output ('Starting Application Pool: {0}' -f $applicationPoolName)
Start-WebAppPool -Name $applicationPoolName
}
언급URL : https://stackoverflow.com/questions/36599456/how-to-start-and-stop-application-pool-in-iis-using-powershell-script
'programing' 카테고리의 다른 글
모든 유효성 검사 오류 제거를 포함하여 양식을 재설정하려면 어떻게 해야 합니까? (0) | 2023.10.06 |
---|---|
다람쥐 SQL에서 Oracle 저장 프로시저 호출 (0) | 2023.10.06 |
MySQL get mindate 및 maxdate를 하나의 쿼리로 얻을 수 있습니다. (0) | 2023.10.06 |
Sql Server Unique Key도 Index입니까? (0) | 2023.10.06 |
src에 변경 사항이 있는 경우에만 빌드 실행 (0) | 2023.10.01 |