Como obter o "Tipo de logon de credenciais de caminho físico" para site e aplicativo?

Como obter o "Tipo de logon de credenciais de caminho físico" para site e aplicativo?

Eu tenho um site IIS 8 configurado com um aplicativo dentro.

Usando o Powershell, como posso obter a configuração "Tipo de logon de credenciais do caminho físico" (o padrão é ClearText) para o site principal e o aplicativo?

O que eu tentei,

Configure um usuário específico e um "Tipo de logon" não padrão para cada um dos aplicativos.

(get-item IIS:\Sites\MYSITE).physicalPath
(get-item IIS:\Sites\MYSITE).username
(get-item IIS:\Sites\MYSITE).password

obtenha exatamente os valores que eu esperaria, mas não há nenhuma propriedade "Tipo de logon" disponível.

(get-item IIS:\Sites\MYSITE).virtualDirectoryDefaults

Mostra o caminho, caminho físico, nome de usuário e senha em branco e tem "logonMethod" definido como "ClearText" padrão.

(get-item IIS:\Sites\MYSITE).Collection[0].virtualDirectoryDefaults

e

(get-item IIS:\Sites\MYSITE).Collection[1].virtualDirectoryDefaults

ambos mostram o mesmo, o caminho, PhysicalPath, nome de usuário e senha estão todos em branco e o "logonMethod" é definido como o padrão "ClearText".

O motivo pelo qual desejo isso é adicionar uma verificação a um script que garante que os sites atendam a uma "lista de verificação de configurações", onde consegui mapear todas as outras configurações do PowerShell.

Responder1

A solução é desviar-se doAdministração Webmódulo e emMicrosoft.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

retorna

ClearText

Os aplicativos[1] indicam o segundo aplicativo, aplicativos[0] é o aplicativo raiz.

OAdicionar tipoversion é importante para evitar o carregamento da instância do servidor IIS-Express.

Para sua informação, porque você precisa criar uma instância do servidor, quaisquer alterações no gerenciador do IIS não estarão disponíveis até que você recrie esse objeto.

Responder2

Acho que você já encontrou a resposta. Não parece haver uma propriedade explícita para isso porque as credenciais fornecidas são usadas apenas para substituir as credenciais normais do thread.

Você pode, no entanto, verificar se o nome de usuário ou a senha estão definidos e criar uma função como esta

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

Responder3

O abaixo retorna o PhysicalPath do VirtualDirectory e o logonMethod, tenho certeza de que isso pode ser feito de forma que você possa direcionar um "Diretório de Aplicativos" específico.

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

informação relacionada