如何在%{dir IIS:\ AppPools \ $ _中创建For..Each值不是文字。名称}

时间:2013-02-21 00:41:23

标签: iis wmi powershell-v2.0 application-pool worker-process

以下是不起作用的

>dir IIS:\AppPools\ | % { dir IIS:\AppPools\$_.Name\WorkerProcesses }

更多信息

我想使用Powershell获取每个应用程序池的PID。我知道我可以使用WMI来获取下面命令之类的信息,但我正在尝试使用Powershell的WebAdministration模块。

WMI方法(工作样本)

Get-WmiObject -NameSpace 'root\WebAdministration' -class 'WorkerProcess' -ComputerName 'host' | select AppPoolName, ProcessId | ft -a

AppPoolName                   ProcessId
-----------                   ---------
MSExchangePowerShellAppPool        5432
MSExchangeServicesAppPool          3604
MSExchangeOWAAppPool               7056
MSExchangeAutodiscoverAppPool      6012
DefaultAppPool                     3288
MSExchangeSyncAppPool              2944

Powershell方法(不工作示例..帮助!)

如何将两个命令的输出(可能作为一行)组合在一起,以便为每个应用程序池提供PID?

[PS] C:\Windows\system32>import-module WebAdministration
[PS] C:\Windows\system32>dir IIS:\AppPools

Name                     State        Applications
----                     -----        ------------
Classic .NET AppPool     Started
DefaultAppPool           Started      Default Web Site
                                      /Rpc
                                      /RpcWithCert
                                      /ArchiveProxy
MSExchangeAutodiscoverAp Started      /Autodiscover
pPool                                 /Autodiscover/bin
                                      /Autodiscover/help
MSExchangeECPAppPool     Started      /ecp
MSExchangeOWAAppPool     Started      /owa
                                      /owa/oma
                                      /ArchiveProxyOwa
MSExchangeOWACalendarApp Started      /owa/Calendar
Pool
MSExchangePowerShellAppP Started      /PowerShell
ool
MSExchangeServicesAppPoo Started      /EWS
l                                     /EWS/bin
MSExchangeSyncAppPool    Stopped      /Microsoft-Server-ActiveSync

我想要合并的第二个查询是:

[PS] C:\Windows\system32>dir IIS:\AppPools\DefaultAppPool\WorkerProcesses  | fl


processId : 3904
Handles   : 89516
state     : Running
StartTime : 2/19/2013 10:34:57 PM

1 个答案:

答案 0 :(得分:2)

你只需要扩展你需要的属性:

dir IIS:\AppPools\ |select -expand name| % { dir IIS:\AppPools\$_\WorkerProcesses }