如何获取站点和应用程序的“物理路径凭证登录类型”?

如何获取站点和应用程序的“物理路径凭证登录类型”?

我有一个 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.管理.服务器管理器

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 和 logonMethod 的 physicalPath,我相信它可以以这样的方式完成,即您可以定位特定的“应用程序目录”。

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

相关内容