Переробити віддалений пул програм IIS з командного рядка?


26

Чи можливо переробити пул додатків IIS7 з командного рядка на іншій машині?

Я знайшов APPCMD ( appcmd recycle apppool my-app-pool), але він працює лише на хості, на якому він працює, AFAICT.

Я почув чутку, що може бути спосіб зробити це з Пауершеллом, але я нічого про це не знаю, і я, мабуть, не дуже добре в цьому гугла.

Я використовую Vista / Server 2008, якщо це має значення.

EDIT: Я знайшов щось, що називається WinRM, за яким хтось стверджує, що може сам запустити APPCMD, але я не впевнений, як саме, але.

Відповіді:


28

Кен, якщо це запускається з CMD, ви могли б зробити це з PSExec . Для цього не потрібна установка на сервері, до якого ви хочете отримати доступ.

Просто скопіюйте вміст zip у файл 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. Ви можете додати його у свій шлях або запустити appcmd за допомогою: "% systemroot% \ system32 \ inetsrv \ AppCmd.exe"
аштоній

1
Ви не цитуєте віддалену команду для PsExec; Ви надсилаєте ім'я команди, а потім аргументи всі розділені пробілами. Тож команда повинна бути:Psexec \\computer c:\windows\system32\inetsrv\appcmd.exe" recycle apppool AppPoolName
Карл G

6

Щоб зробити це віддалено від PowerShell, потрібно або використовувати видалення PowerShell, або використовувати WMI.

Це насправді дуже просто, використовуючи командлет Invoke-WMIMethod PowerShell, але вам потрібно вказати -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
Можливо, вам потрібно буде включити "Сумісність IIS 6 WMI" на IIS7, щоб мати доступ до кореневого \ MicrosoftIISv2 простору імен. forums.iis.net/t/1158882.aspx
Брайан Низький

3

Якщо командний рядок - це ваш вибір, PsExec, здається, є рішенням, але для вирішальних завдань місії я не рекомендував би його. Причина в наступному: PsExec має проблеми з декількома запусками.

Я вважаю за краще використовувати API для таких цілей.

  1. WMI зробить роботу, як описано тут (моє улюблене рішення).
  2. Крім того, ви можете використовувати API ServerManager . Це дозволяє керувати пулами програм на віддаленій машині, якщо ви запускаєте код з відповідними обліковими записами.

2

Схожа на відповідь @ Джеффа, якщо видалення Пауершелла було б:

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

Потім в інтерактивному сеансі, потім:

appcmd recycle apppool my-app-pool

щоб перезапустити пул додатків.


0

Переробити AppPool в PowerShell

У цьому прикладі: MSExchangeSyncAppPool

$appPool = Get-WmiObject -Authentication PacketPrivacy -Impersonation Impersonate -ComputerName (hostname) -namespace "root/MicrosoftIISv2" -class IIsApplicationPool | Where-Object {$_.Name -eq "W3SVC/AppPools/MSExchangeSyncAppPool" }
$appPool.Recycle()
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.