2013-12-17 14 views
5

uygulamalar sayısını almak nasıl belirli bir IIS AppPool aracılığıyla PowerShell komut ile ilişkili uygulamaların sayısı almak için?PowerShell: AppPool

Biz elle kullanarak ilişkili uygulamaları görebilir: manuel Applications sütunu seçmek istiyorsanız

Get-Item IIS:\AppPools\AppPoolName 

Ancak, bu mümkün değildir. Ayrıca, Applications sütun | Get-Member * içinde listelenmiyor.

  1. Neden sütun listede yok?
  2. Nasıl belirli bir IIS AppPool kullanarak PowerShell ile ilişkili uygulamaların sayısını bulmak için?

cevap

10

hile: PowerShell (nesne sütun gösterildi bir liste veya bir tablo, vb olarak biçimlendirilmiş örneğin olsun) nesnelerin biçimi nasıl PowerShell söylemek sözde "görünüşüdür tanım dosyalarını" kurulmuş. Bu dosyalar C:\Windows\System32\WindowsPowerShell\v1.0 adresinde bulunabilir ve hepsi .format.ps1xml ile biter.

<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> 

kolon kendisi AppPool üyesi olmayan olmasının nedeni budur cevaplar: C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\iisprovider.format.ps1xml hesaplanmış sütun, bu gibi bakarak tanımlar AppPool türü için görünüm tanımını içeren dosyayı:

orijinal soruyu cevaplamak için yazın. İkinci soru kolayca şimdi yukarıdaki "scriptlet" dan gerekli kodu ayıklanması cevap vermek mümkündür: Sonunda çözümü geldikten kadar saatlerce aynı sorun ele

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

. D.R. çok yardımcı oldu ama benim için çalışmıyordu. Bazı ince ayarlardan sonra, bir uygulama havuzundaki uygulamaların sayısını alan aşağıdaki kodla geldim.

kod nd @path!='/' bu kısmı sayımını attı fark ettim.

$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

Ben

$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

Yanıtınız bu konuya şey eklemez aşağıdaki Kanunu ile sona erdi (yukarıdaki gibi temelde aynı, fakat farklı biçimlendirilmiş). Bu bir yorum olmalı ama ne yazık ki henüz onları gönderemezsiniz ... Yukarıdaki yazının bir biçimlendirme sorunu olduğunu belirttiğiniz için teşekkür ederiz. – Wndrr