如何取得網站和應用程式的「實體路徑憑證登入類型」?

如何取得網站和應用程式的「實體路徑憑證登入類型」?

我有一個 IIS 8 網站設置,其中有一個應用程式。

使用 Powershell 如何取得主網站和應用程式的「實體路徑憑證登入類型」設定(預設為 ClearText)?

我所嘗試過的,

為每個應用程式設定特定使用者和非預設「登入類型」。

(get-item IIS:\Sites\MYSITE).physicalPath
(get-item IIS:\Sites\MYSITE).username
(get-item IIS:\Sites\MYSITE).password

準確地取得我期望的值,但沒有可用的「登入類型」屬性。

(get-item IIS:\Sites\MYSITE).virtualDirectoryDefaults

顯示路徑、實體路徑、使用者名稱和密碼均為空白,並將「logonMethod」設定為預設「ClearText」。

(get-item IIS:\Sites\MYSITE).Collection[0].virtualDirectoryDefaults

(get-item IIS:\Sites\MYSITE).Collection[1].virtualDirectoryDefaults

兩者顯示相同,路徑、實體路徑、使用者名稱和密碼均為空白,而「logonMethod」設定為預設「ClearText」。

我想要這樣做的原因是向腳本添加一個檢查,以確保網站滿足“設定檢查清單”,在這裡我能夠從 powershell 映射所有其他設定。

答案1

解決辦法就是遠離網路管理模組並進入Microsoft.Web.管理.ServerManager

Add-Type -AssemblyName "Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
$iis = new-object Microsoft.Web.Administration.ServerManager
($iis.Sites | where { $_.name -eq "MYSITE" }).applications[1] | select -ExpandProperty VirtualDirectories | select LogonMethod

回報

ClearText

applications[1] 表示第二個應用程序,applications[0] 是根應用程式。

新增類型版本對於避免載入 IIS-Express 伺服器實例很重要。

僅供參考,因為您必須建立伺服器的實例,所以在重新建立該物件之前,IIS 管理器中的任何變更都不可用。

答案2

我想你已經偶然發現答案了。似乎沒有明確的屬性,因為給定的憑證僅用於覆蓋正常的線程憑證。

但是,您可以檢查是否設定了使用者名稱或密碼並建立以下函數

function Get-PhysicalLogonType ($site) {
  if($site.username -eq '' -and $site.password -eq '') {
    return 'PassThrough'
  }
  return 'SpecificUser'
}

# ... use it somewhere in your script
$site = (get-item IIS:\site\mysite)
Get-PhysicalLogonType $site

答案3

下面返回 VirtualDirectory 的實體路徑和登入方法,我相信它可以透過這樣​​的方式完成,您可以定位特定的「應用程式目錄」。

Get-Item IIS:\Sites\* | Select-Object -ExpandProperty Collection | Select-Object -ExpandProperty Collection | Select-Object -Property physicalPath,logonMethod

相關內容