我有一个应用程序中的IIS 8网站设置。
使用Powershell如何获取主站点和应用程序的“Physical Path Credentials Logon Type”设置(默认为ClearText)?
我曾经尝试过,
为每个应用程序设置特定的用户和非默认“logintypes”。
(get-item IIS:\Sites\MYSITE).physicalPath (get-item IIS:\Sites\MYSITE).username (get-item IIS:\Sites\MYSITE).password
准确地得到我所期望的值,但没有“logintypes”属性可用。
(get-item IIS:\Sites\MYSITE).virtualDirectoryDefaults
显示path,physicalPath,用户名和密码全部为空,并将“logonMethod”设置为默认的“ClearText”。
(get-item IIS:\Sites\MYSITE).Collection[0].virtualDirectoryDefaults
和
(get-item IIS:\Sites\MYSITE).Collection[1].virtualDirectoryDefaults
两者显示相同,path,physicalPath,用户名和密码全部空白,并将“logonMethod”设置为默认的“ClearText”。
我希望这样做的原因是为脚本添加一个检查脚本,以确保站点符合“设置检查列表”,我已经能够映射PowerShell中的所有其他设置。
我想你已经偶然发现了答案。 这似乎没有明确的属性,因为给定的凭据只是用来覆盖正常的线程凭据。
但是,您可以检查是否设置了用户名或密码,并创build一个像这样的function
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
解决方法是从Webpipe理模块中离开,进入Microsoft.Web.Administration.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
应用程序[1]表示第二个应用程序,应用程序[0]是根应用程序。
Add-Type版本对于避免加载IIS-Express服务器实例很重要。
仅供参考,因为您必须创build一个服务器的实例IISpipe理器中的任何更改才可用,直到您重新创build该对象。