कमांड लाइन से दूरस्थ IIS ऐप पूल को रीसायकल करें?


26

क्या एक अलग मशीन पर कमांड लाइन से IIS7 ऐप पूल को रीसायकल करना संभव है?

मैंने एपीपीसीएमडी ( appcmd recycle apppool my-app-pool) पाया है , लेकिन यह केवल उस होस्ट पर संचालित होता है जो एएफएआईसीटी पर चलता है।

मैंने सुना कि एक अफवाह है, इसे पॉवर्सशेल के साथ करने का एक तरीका हो सकता है, लेकिन मुझे इसके बारे में कुछ भी नहीं पता है, और मैं स्पष्ट रूप से इसके लिए googling में बहुत अच्छा नहीं हूं।

मैं Vista / Server 2008 का उपयोग कर रहा हूँ, अगर यह मायने रखता है।

संपादित करें: मुझे WinRM नामक कुछ मिला है जो किसी का दावा है कि APPCMD को स्वयं चलाने में सक्षम है, लेकिन मुझे यकीन नहीं है कि अभी तक कैसे।

जवाबों:


28

केन, यदि यह CMD से चलाया जाता है, तो आप इसे PSExec के साथ कर सकते हैं । इसके लिए उस सर्वर पर संस्थापन की आवश्यकता नहीं है जिसे आप एक्सेस करना चाहते हैं।

जिस सिस्टम से आप दूरस्थ से चाहते हैं, उसके लिए ज़िप की सामग्री को अपने 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) स्वचालित रूप से पथ का हिस्सा नहीं है। आप इसे या तो अपने पथ पर जोड़ सकते हैं या अप्पम को चला सकते हैं: "% systemroot% \ system32 \ inetsrv \ AppCmd.exe"
ashtonium

1
आप PsExec के लिए दूरस्थ कमांड को उद्धृत नहीं करते हैं; आप कमांड नाम में भेजे गए तर्कों के बाद रिक्त स्थान से अलग हो गए हैं। तो कमांड होना चाहिए:Psexec \\computer c:\windows\system32\inetsrv\appcmd.exe" recycle apppool AppPoolName
कार्ल जी

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
रूट \ MicrosoftIISv2 नाम स्थान उपलब्ध होने के लिए आपको IIS7 पर "IIS 6 WMI संगतता" को सक्षम करने की आवश्यकता हो सकती है। forum.iis.net/t/1158882.aspx
ब्रायन लो

3

यदि कमांड लाइन आपकी पसंद है, तो PsExec समाधान प्रतीत होता है, लेकिन मिशन महत्वपूर्ण कार्यों के लिए मैं इसकी सिफारिश नहीं करूंगा। इसका कारण निम्नलिखित है: PsExec में कई रन की समस्याएं हैं

मैं ऐसे उद्देश्यों के लिए एपीआई का उपयोग करना पसंद करता हूं।

  1. WMI काम करेगा क्योंकि यह यहाँ वर्णित है (मेरा पसंदीदा समाधान)।
  2. वैकल्पिक रूप से आप ServerManager API का उपयोग कर सकते हैं । यदि आप अपने कोड को संबंधित क्रेडेंशियल्स के साथ चलाते हैं तो यह रिमोट मशीन पर एप्लिकेशन पूल को प्रबंधित करने की अनुमति देता है ।

2

@ जेफ के जवाब के समान, पॉवर्सशेल की रीमोटिंग के साथ यह होगा:

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()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.