programing

Powershell 스크립트를 사용하여 IISRESET을 수행하는 방법

javajsp 2023. 9. 6. 21:48

Powershell 스크립트를 사용하여 IISRESET을 수행하는 방법

PowerShell 스크립트로 IISRESET을 수행하는 방법을 아는 사람?파워를 사용하고 있습니다.Windows 2008 상자에 PowerShell 1.0이 설치된 GUI 편집기.

Invoke-Command cmdlet을 사용하면 다음 작업을 수행할 수 있습니다.

invoke-command -scriptblock {iisreset}

업데이트:

또한 &call 연산자를 사용하여 명령을 단순화할 수 있습니다.

& {iisreset}

사용한 적이 있음& {iisreset}가끔 실패를 거듭하면서 이 점을 생각해 봅니다.

Start-Process "iisreset.exe" -NoNewWindow -Wait

이제 그것은 기다려집니다.iisreset.exe우아하게 끝내려고요

이것은 저에게 잘 맞습니다.이 응용 프로그램에서는 반환 코드에 관심이 없습니다.

Start-Process -FilePath C:\Windows\System32\iisreset.exe -ArgumentList /RESTART -RedirectStandardOutput .\iisreset.txt
Get-Content .\iisreset.txt | Write-Log -Level Info

Write-Log cmdlet은 제가 로깅에 사용하는 맞춤형이지만, 다른 것으로 대체할 수도 있습니다.

이것이 아주 오래된 것은 알지만, 파워셸의 명령줄에서 어떤 명령줄 프로세스도 실행할 수 있습니다.따라서 필요한 스위치를 사용하여 IISReset을 호출하는 스크립트가 필요합니다.

iisreset.exe는 컴퓨터 이름을 매개 변수로 지원합니다.아래 예제에서는 여러 서버에서 IIS를 재설정하는 기본 아이디어를 보여 줍니다.

$servers = @()
$servers += 'server1'
$servers += 'server2'
...
$servers += 'serverN'

부터iisreset.exe다중값 매개변수를 지원하지 않기 때문에 이를 루프로 포장해야 합니다.

$servers | %{ iisreset $_ /restart /noforce }

간단한 모니터링을 추가할 수 있습니다.

$servers | %{ Write-Host "`n`n$_`n" -NoNewline ; iisreset $_ /restart /noforce /timeout:30 }

서버가 많은 경우 장애에만 관심이 있을 수 있습니다.

$servers | %{ Write-Host "`n`n$_`n" -NoNewline ; iisreset $_ /restart /noforce /timeout:30 | Select-String "failed" }

가독성 향상을 위한 다중 라인 버전:

foreach ( $server in $servers ) {
    Write-Host "`n`n$server`n" -NoNewline ; 
    iisreset $server /restart /noforce /timeout:30 | Select-String "failed"
}

당신의 스크립트를 다음과 같이 테스트하는 것을 강력히 추천합니다./status실시 전에/reset작업:

$servers | %{ iisreset $_ /status }

정지된 구성요소를 다음과 같이 확인할 수 있습니다./status또한:

$servers | %{ Write-Host "`n`n$_`n" -NoNewline ; iisreset $_ /status | Select-String "Stopped" }

언급

  • /restart는 기본 매개 변수입니다.iisreset.exe사용중입니다./restart다른 조치가 지정되지 않은 경우
  • /noforce예방할 것입니다iisreset.exe오류가 발생할 경우 실행할 수 있습니다.
  • /timeout- IIS가 중지 상태로 고착되지 않도록 서버가 요청을 처리하는 데 더 많은 시간을 할애해야 하는 경우도 있습니다.

정확히 무엇을 찾고 있는지는 모르지만 "iisreset / noforce" 본문으로 스크립트를 만듭니다.

를 들자면: http://technet.microsoft.com/en-us/library/cc785436.aspx

IIS 중지 또는 시작(테스트됨)

WaitForExit and ExitCode work fine

[System.Reflection.Assembly]::LoadWithPartialName("System.Diagnostics").FullName
$procinfo = New-object System.Diagnostics.ProcessStartInfo
$procinfo.CreateNoWindow = $true
$procinfo.UseShellExecute = $false
$procinfo.RedirectStandardOutput = $true
$procinfo.RedirectStandardError = $true
$procinfo.FileName = "C:\Windows\System32\iisreset.exe"
$procinfo.Arguments = "/stop"
$proc = New-Object System.Diagnostics.Process
$proc.StartInfo = $procinfo
[void]$proc.Start()
$proc.WaitForExit()
$exited = $proc.ExitCode
$proc.Dispose()

    Write-Host $exited

저는 아래의 간단한 명령어를 사용하는 것이 가장 쉽다는 것을 알았습니다.

D:\PS\psexec \server_nameieset

언급URL : https://stackoverflow.com/questions/1670872/how-to-perform-iisreset-with-powershell-script