2013-12-17 7 views
5

में अनुप्रयोगों की संख्या पुनर्प्राप्त करें PowerShell कमांड के माध्यम से किसी विशिष्ट IIS AppPool से जुड़े अनुप्रयोगों की संख्या को कैसे पुनर्प्राप्त करें?पावरशेल: AppPool

हम जुड़े अनुप्रयोगों मैन्युअल का उपयोग कर देख सकते हैं:

Get-Item IIS:\AppPools\AppPoolName 

हालांकि, अगर हम स्वयं Applications स्तंभ का चयन करना चाहते हैं, यह संभव नहीं है। इसके अलावा, Applications स्तंभ | Get-Member * भीतर सूचीबद्ध नहीं है।

  1. कॉलम क्यों सूचीबद्ध नहीं है?
  2. कैसे एक विशिष्ट PowerShell IIS AppPool के उपयोग से संबंधित आवेदनों की संख्या को खोजने के लिए?

उत्तर

10

चाल है: PowerShell तथाकथित "दृश्य परिभाषा फ़ाइलें" जो PowerShell बता स्थापित कैसे वस्तुओं फ़ॉर्मेट करने के लिए (जैसे कि क्या वस्तु एक एक सूची या एक मेज, जो स्तंभ प्रदर्शित किए जाते हैं, आदि के रूप में स्वरूपित है)। उन फ़ाइलों C:\Windows\System32\WindowsPowerShell\v1.0 में पाया जा सकता है और सभी .format.ps1xml में समाप्त कर रहे हैं। फ़ाइल C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\iisprovider.format.ps1xmlAppPool प्रकार है जो परिकलित स्तंभ में इस तरह लग रही परिभाषित करता है के लिए दृश्य परिभाषा में शामिल है::

<TableColumnItem> 
<ScriptBlock> 
    $pn = $_.Name 
    $sites = get-webconfigurationproperty "/system.applicationHost/sites/site/application[@applicationPool=`'$pn`'and @path='/']/parent::*" machine/webroot/apphost -name name 
    $apps = get-webconfigurationproperty "/system.applicationHost/sites/site/application[@applicationPool=`'$pn`'and @path!='/']" machine/webroot/apphost -name path 
    $arr = @() 
    if ($sites -ne $null) {$arr += $sites} 
    if ($apps -ne $null) {$arr += $apps} 
    if ($arr.Length -gt 0) { 
     $out = "" 
     foreach ($s in $arr) {$out += $s.Value + "`n"} 
     $out.Substring(0, $out.Length - 1) 
    } 
    </ScriptBlock> 
</TableColumnItem> 

यह उत्तर देता है क्यों स्तंभ ही AppPool का सदस्य नहीं है

मूल प्रश्न का उत्तर देने प्रकार। दूसरा सवाल आसानी से जवाब अब आवश्यक कोड "स्क्रिप्टलेट" से ऊपर निकालने जा सकता है:

$applicationsInAppPoolCount = @(Get-WebConfigurationProperty `"/system.applicationHost/sites/site/application[@applicationPool=`'$appPool`'and @path!='/']"` "machine/webroot/apphost" -name path).Count 
2

मैं अंत में समाधान पर पहुंचने तक कई घंटों के लिए यह एक ही मुद्दे के साथ निपटा। डीआर से जवाब बहुत मददगार था लेकिन यह मेरे लिए काम नहीं कर रहा था। कुछ बदलावों के बाद, मैं नीचे दिए गए कोड के साथ आया जो ऐप पूल में एप्लिकेशन की संख्या को पुनर्प्राप्त करता है।

मैंने देखा कि कोड nd @path!='/' कोड का यह हिस्सा गिनती को फेंक दिया।

$appPool = "REPLACE ME with a value from your app pool" 
@(Get-WebConfigurationProperty "/system.applicationHost/sites/site/application[@applicationPool=`'$appPool`']" "machine/webroot/apphost" -name path).Count 
0

मैं निम्नलिखित कोड के साथ समाप्त हो गया (जैसा कि ऊपर के रूप में मूलतः एक ही है, लेकिन प्रारूप अलग)

$appPools = Get-ChildItem –Path IIS:\AppPools 
foreach ($apppool in $apppools) { 
    $appoolName = $apppool.Name 
    [string] $NumberOfApplications = (Get-WebConfigurationProperty "/system.applicationHost/sites/site/application[@applicationPool='$appoolName']" "machine/webroot/apphost" -name path).Count 
    Write-Output "AppPool name: $appoolName has $NumberOfApplications applications" 
} 
+0

आपका जवाब इस सूत्र के लिए कुछ भी नहीं जोड़ता है। यह एक टिप्पणी होनी चाहिए लेकिन आप दुखद रूप से उन्हें पोस्ट नहीं कर सकते हैं ... यह इंगित करने के लिए धन्यवाद कि उपरोक्त पोस्ट में स्वरूपण समस्या है। – Wndrr