명령 줄에서 원격 IIS 앱 풀을 재활용 하시겠습니까?


26

다른 컴퓨터의 명령 줄에서 IIS7 앱 풀을 재활용 할 수 있습니까?

APPCMD ( appcmd recycle apppool my-app-pool)를 찾았 지만 AFAICT에서 실행되는 호스트에서만 작동합니다.

Powershell로 할 수있는 소문이 있다고 들었지만 그것에 대해 아무것도 알지 못하며 인터넷 검색에 능숙하지 않습니다.

Vista / Server 2008을 사용하고 있습니다.

편집 : 누군가가 APPCMD 자체를 실행할 수 있다고 주장하는 WinRM 이라는 것을 발견 했지만 정확히 어떻게 아직 확실하지 않습니다.

답변:


28

켄, 이것이 CMD에서 실행되면 PSExec으로 할 수 있습니다. 액세스하려는 서버에 설치할 필요가 없습니다.

ZIP 의 내용 을 원격 FROM하려는 컴퓨터의 System32 파일 (ELUA 또는 DLL 파일은 포함하지 않음)에 복사하면 됩니다.
그런 다음 CMD
유형을 입력하십시오
Psexec \\{Computer Name of ISS7 Server} %systemroot%\System32\inetsrv\appcmd recycle apppool my-app-pool

도메인 관리자 계정에서 동일한 도메인에 있지 않은 경우 관리 액세스를 위해 자격 증명을 입력해야합니다. 자세한 내용을 보려면 인수없이 명령 줄에 psexec를 입력하십시오.


4
AppCmd.exe 위치 (% systemroot % \ system32 \ inetsrv)는 PATH의 일부가 자동으로 아닙니다. "% systemroot % \ system32 \ inetsrv \ AppCmd.exe"를 사용하여 경로에 추가하거나 appcmd를 실행할 수 있습니다.
ashtonium

1
PsExec의 원격 명령은 인용하지 않습니다. 명령 이름 다음에 공백으로 구분 된 인수를 보냅니다. 따라서 명령은 다음과 같아야합니다.Psexec \\computer c:\windows\system32\inetsrv\appcmd.exe" recycle apppool AppPoolName
Carl G

6

PowerShell에서 원격으로 수행하려면 PowerShell 원격을 사용하거나 WMI를 사용해야합니다.

실제로 Invoke-WMIMethod PowerShell cmdlet을 사용하는 것은 매우 간단하지만 -Authentication PacketPrivacy ...을 지정해야합니다. 다른 자격 증명을 지정해야하는 경우 매개 변수를 사용하여이를 수행 할 수 있습니다 -Credential (Get-Credential). 다음은 예입니다.

$pc = "serverName"

## List the app pools, note the __RELPATH of the one you want to kill:
Get-WMIObject IISApplicationPool 
              -Computer $pc 
              -Namespace root\MicrosoftIISv2 
              -Authentication PacketPrivacy 

## Recycle a specific one:
$Name = "W3SVC/APPPOOLS/ASP.NET v4.0 Classic"  ## This is the Name from above
$Path = "IISApplicationPool.Name='$Name'"      ## This is the __RELPATH

Invoke-WMIMethod Recycle 
                 -Path $Path 
                 -Computer $pc 
                 -Namespace root\MicrosoftIISv2 
                 -Authentication PacketPrivacy

나는 그 모든 것을 마무리하는 멋진 기능을 썼습니다 : http://poshcode.org/2466


3
root \ MicrosoftIISv2 네임 스페이스를 사용하려면 IIS7에서 "IIS 6 WMI 호환성"을 활성화해야 할 수도 있습니다. forums.iis.net/t/1158882.aspx
Brian Low

3

커맨드 라인이 당신의 선택이라면 PsExec 이 해결책 인 것처럼 보이지만 미션 크리티컬 작업의 경우에는 권장하지 않습니다. 그 이유는 다음과 같습니다. PsExec 에 여러 실행에 문제 가 있습니다.

그런 목적으로 API를 사용하는 것을 선호합니다.

  1. WMI는 여기 에 설명 된대로 작업을 수행합니다 (내가 가장 좋아하는 솔루션).
  2. 또는 ServerManager API를 사용할 수 있습니다 . 해당 자격 증명으로 코드를 실행하면 원격 컴퓨터 에서 응용 프로그램 풀을 관리 할 수 ​​있습니다 .

2

@Jeff의 답변과 비슷하지만 Powershell을 원격으로 사용하면 다음과 같습니다.

Enter-PSSession -ComputerName <your server> -Credential <username, or (Get-Credential)>

그런 다음 대화식 세션에서 다음을 수행하십시오.

appcmd recycle apppool my-app-pool

앱 풀을 다시 시작합니다.


0

PowerShell에서 AppPool 재활용

이 예에서 : MSExchangeSyncAppPool

$appPool = Get-WmiObject -Authentication PacketPrivacy -Impersonation Impersonate -ComputerName (hostname) -namespace "root/MicrosoftIISv2" -class IIsApplicationPool | Where-Object {$_.Name -eq "W3SVC/AppPools/MSExchangeSyncAppPool" }
$appPool.Recycle()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.