2016-08-11 74 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