![Как получить «Тип входа с учетными данными физического пути» для сайта и приложения?](https://rvso.com/image/668794/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%C2%AB%D0%A2%D0%B8%D0%BF%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B0%20%D1%81%20%D1%83%D1%87%D0%B5%D1%82%D0%BD%D1%8B%D0%BC%D0%B8%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8%20%D1%84%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE%20%D0%BF%D1%83%D1%82%D0%B8%C2%BB%20%D0%B4%D0%BB%D1%8F%20%D1%81%D0%B0%D0%B9%D1%82%D0%B0%20%D0%B8%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%3F.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
оба показывают одно и то же, 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