一个池中有两个站点在运行。我需要提取站点的名称以供将来使用。我使用下一个命令进行 exp。
PS C:\> Get-Item IIS:\AppPools\tech-2
Name State Applications
---- ----- ------------
tech-2 Started tech-2
tech-3
PS C:\> get-item iis:\apppools\tech-2 | select Applications
Applications
------------
但结果为空。选择名称和状态,效果良好。
请帮忙。
答案1
尝试以下脚本:
import-module webadministration
$appPool = "MyPoolName"
$apps = (Get-WebConfigurationProperty "/system.applicationHost/sites/site/application[`
@applicationPool='$appPool']" "machine/webroot/apphost" -name path).ItemXPath
foreach ($s in $apps) {
$name = $s -replace "\/system.applicationHost\/sites\/site\[\@name='", ""
$name = $name -replace "' and \@id='\d{1,10}'\]\/application\[\@path='", ""
$name = $name -replace "'\]",""
$out += $name + "`n"
}
$out
问题是站点实际上并没有存储在应用程序池对象中,应用程序池存储在站点/应用程序中。
首先,我找到池名称的所有出现位置的所有 ItemXPath,然后在 foreach 循环中删除不需要的部分。虽然不太优雅,但确实有效。
作为奖励,该解决方案为您提供站点和应用程序名称,而不仅仅是站点名称。