Как получить «Тип входа с учетными данными физического пути» для сайта и приложения?

Как получить «Тип входа с учетными данными физического пути» для сайта и приложения?

У меня настроен веб-сайт 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

оба показывают одно и то же, path,physicalPath,username и password пустые, а «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

Приложения[1] указывают на второе приложение, приложения[0] — корневое приложение.

TheДобавить-Типверсия важна для предотвращения загрузки экземпляра сервера 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

Ниже возвращается physicalPath VirtualDirectory и logonMethod. Я уверен, что это можно сделать таким образом, чтобы можно было указать конкретный «Каталог приложения».

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

Связанный контент