Odzyskać zdalną pulę aplikacji IIS z wiersza polecenia?


26

Czy jest możliwe ponowne przetworzenie puli aplikacji IIS7 z wiersza polecenia na innym komputerze?

Znalazłem APPCMD ( appcmd recycle apppool my-app-pool), ale działa tylko na hoście, na którym jest uruchomiony, AFAICT.

Słyszałem pogłoski, że może być sposób, aby to zrobić za pomocą Powershell, ale nic o tym nie wiem i najwyraźniej nie jestem zbyt dobry w googlowaniu.

Używam Vista / Server 2008, jeśli to ma znaczenie.

EDYCJA: Znalazłem coś o nazwie WinRM, o którym ktoś twierdzi, że może sam uruchomić APPCMD, ale nie jestem jeszcze pewien, jak to zrobić.

Odpowiedzi:


28

Ken, jeśli jest uruchamiany z CMD, możesz to zrobić za pomocą PSExec . Nie wymaga to instalacji na serwerze, do którego chcesz uzyskać dostęp.

Po prostu skopiuj zawartość zip do pliku System32 (nie dołączaj pliku ELUA ani DLL) komputera, z którego chcesz zdalnie korzystać.
Następnie wpisz
typ CMD
Psexec \\{Computer Name of ISS7 Server} %systemroot%\System32\inetsrv\appcmd recycle apppool my-app-pool

Jeśli nie jesteś w tej samej domenie na koncie administratora domeny, musisz wprowadzić poświadczenia dostępu administracyjnego. Aby uzyskać więcej informacji, po prostu wpisz psexec w wierszu polecenia bez argumentów.


4
Lokalizacja AppCmd.exe (% systemroot% \ system32 \ inetsrv) nie jest automatycznie częścią ŚCIEŻKI. Możesz dodać go do swojej ścieżki lub uruchomić appcmd za pomocą: "% systemroot% \ system32 \ inetsrv \ AppCmd.exe"
ashtonium

1
Nie cytujesz polecenia zdalnego dla PsExec; wysyłasz nazwę polecenia wraz z argumentami oddzielonymi spacjami. Tak więc polecenie powinno brzmieć:Psexec \\computer c:\windows\system32\inetsrv\appcmd.exe" recycle apppool AppPoolName
Carl G

6

Aby to zrobić zdalnie z PowerShell, musisz albo użyć programu PowerShell, albo WMI.

W rzeczywistości jest to bardzo proste za pomocą polecenia cmdlet PowerShell Invoke-WMIMethod, ale musisz określić -Authentication PacketPrivacy ... a jeśli musisz podać inne poświadczenia, możesz to zrobić za pomocą parametru -Credential (Get-Credential)... oto przykład:

$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

Napisałem fajną funkcję do podsumowania tego wszystkiego: http://poshcode.org/2466


3
Może być konieczne włączenie „Zgodności IIMI 6 WMI” w IIS7, aby przestrzeń nazw root \ MicrosoftIISv2 była dostępna. forums.iis.net/t/1158882.aspx
Brian Low

3

Jeśli wybierasz wiersz poleceń, PsExec wydaje się rozwiązaniem, ale w przypadku zadań o kluczowym znaczeniu nie poleciłbym tego. Powód jest następujący: PsExec ma problemy z wieloma uruchomieniami.

Wolę używać API do takich celów.

  1. WMI wykona zadanie zgodnie z opisem tutaj (moje ulubione rozwiązanie).
  2. Alternatywnie możesz użyć API ServerManager . Pozwala zarządzać pulami aplikacji na zdalnym komputerze, jeśli uruchomisz kod z odpowiednimi poświadczeniami.

2

Podobnie do odpowiedzi @ Jeffa, z Powershell zdalnie:

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

Następnie w sesji interaktywnej, a następnie:

appcmd recycle apppool my-app-pool

aby ponownie uruchomić pulę aplikacji.


0

Odtwórz AppPool w PowerShell

W tym przykładzie: MSExchangeSyncAppPool

$appPool = Get-WmiObject -Authentication PacketPrivacy -Impersonation Impersonate -ComputerName (hostname) -namespace "root/MicrosoftIISv2" -class IIsApplicationPool | Where-Object {$_.Name -eq "W3SVC/AppPools/MSExchangeSyncAppPool" }
$appPool.Recycle()
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.