![사이트 및 응용 프로그램에 대한 "물리적 경로 자격 증명 로그온 유형"을 얻는 방법은 무엇입니까?](https://rvso.com/image/668794/%EC%82%AC%EC%9D%B4%ED%8A%B8%20%EB%B0%8F%20%EC%9D%91%EC%9A%A9%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%97%90%20%EB%8C%80%ED%95%9C%20%22%EB%AC%BC%EB%A6%AC%EC%A0%81%20%EA%B2%BD%EB%A1%9C%20%EC%9E%90%EA%B2%A9%20%EC%A6%9D%EB%AA%85%20%EB%A1%9C%EA%B7%B8%EC%98%A8%20%EC%9C%A0%ED%98%95%22%EC%9D%84%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%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
둘 다 동일하게 표시되며 경로, 물리적 경로, 사용자 이름 및 비밀번호는 모두 비어 있고 "logonMethod"는 기본 "ClearText"로 설정됩니다.
내가 이것을 원하는 이유는 사이트가 "설정 확인 목록"을 충족하는지 확인하는 스크립트에 확인을 추가하는 것입니다. 여기서는 powershell에서 다른 모든 설정을 매핑할 수 있었습니다.
답변1
해결책은 틀에서 벗어나는 것이다.웹관리모듈과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]은 루트 애플리케이션을 나타냅니다.
그만큼추가 유형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의 PhysicalPath와 logonMethod를 반환합니다. 특정 "응용 프로그램 디렉터리"를 대상으로 지정할 수 있는 방식으로 수행할 수 있다고 확신합니다.
Get-Item IIS:\Sites\* | Select-Object -ExpandProperty Collection | Select-Object -ExpandProperty Collection | Select-Object -Property physicalPath,logonMethod