2016-08-11 47 views
7

试图让应用程序池标识在IIS中为特定的名称,例如:测试获取应用程序池标识IIS在电源外壳脚本

在通过下面的代码得到它Succeded但通过所有不想循环webapps,有没有通过指定名称来获取它的简单方法?

Import-Module WebAdministration 
Get-WebApplication 

$webapps = Get-WebApplication 
$list = @() 
foreach ($webapp in get-childitem IIS:\AppPools\) 
{ 
    $name = "IIS:\AppPools\" + $webapp.name 
    $item = @{} 
    if ($webapp.name -eq 'Test') 
    {   
     $item = $webapp.processModel.identityType 
     break 
    } 
} 


echo $webapp.processModel.identityType 

回答

4

只是结合路径和检索项目。这将工作:

$item = Get-Item (Join-Path 'IIS:\AppPools\' 'Test') | 
    select -ExpandProperty processModel | 
    select -expand identityType 
+0

以下使用,但不工作: $ web应用= “测试” $项目=获取项目(联接路径 'IIS:\ AppPools \ $ webapp的')| select -ExpandProperty processModel | 选择-expand identityType – Joseph

+0

是啊,因为你必须使用'获取项目(联接路径 'IIS:\ AppPools' $ Web应用程序)',而不是'获取项目(联接路径“IIS:\ AppPools \ $的webapp ')'... –

+1

工程就像一个魅力! – Joseph

5

不严格什么OP想要的,但谷歌带领我在这里查询所有的应用程序池标识。这是我的版本

Import-Module WebAdministration;Get-ChildItem -Path IIS:\AppPools\ | 
Select-Object name, state, managedRuntimeVersion, managedPipelineMode, @{e={$_.processModel.username};l="username"}, <#@{e={$_.processModel.password};l="password"}, #> @{e={$_.processModel.identityType};l="identityType"} | 
format-table -AutoSize