![如何取得網站和應用程式的「實體路徑憑證登入類型」?](https://rvso.com/image/668794/%E5%A6%82%E4%BD%95%E5%8F%96%E5%BE%97%E7%B6%B2%E7%AB%99%E5%92%8C%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E7%9A%84%E3%80%8C%E5%AF%A6%E9%AB%94%E8%B7%AF%E5%BE%91%E6%86%91%E8%AD%89%E7%99%BB%E5%85%A5%E9%A1%9E%E5%9E%8B%E3%80%8D%EF%BC%9F.png)
我有一個 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