programing

PowerShell에서 애플리케이션 풀 ID 사용자 및 암호를 지정하는 방법

linuxpc 2023. 8. 14. 22:32
반응형

PowerShell에서 애플리케이션 풀 ID 사용자 및 암호를 지정하는 방법

웹 응용 프로그램 설정을 자동화하고 응용 프로그램 풀 ID를 사용하여 IIS를 적절하게 구성하는 데 많은 어려움이 있었습니다.PowerShell로 작성된 웹 애플리케이션 배포 스크립트에서 이 작업을 수행하고 있습니다.애플리케이션 풀 ID 사용자를 특정 서비스 계정 mydomain\svcuser 및 암호로 설정하려면 PowerShell 스크립트가 필요합니다.다음은 샘플 코드입니다.

$pool = New-Item "IIS:\AppPools\MyAppPool" -Force
$svcuser = "mydomain\svcuser"
$pool.processModel.userName = $svcuser
$password = "somepassword"
$pool.processModel.password = $password
$pool.processModel.identityType = 3
$pool | Set-Item -ErrorAction Stop

이를 실행하면 오류가 발생하지 않고 응용 프로그램 ID 사용자 이름이 IIS에 표시되는 모든 것이 올바르게 작동하는 것처럼 보이지만, 어떤 이유로든 암호가 올바르게 설정되지 않습니다.비밀번호이기 때문에 설정이 되었는지 확인할 수 없지만, 설정이 정확하지 않다고 판단할 수 있습니다.수동으로 IIS에 들어가 암호를 입력할 때까지 결과 응용 프로그램 풀 사용자를 인증하지 않습니다.따라서 웹 서버에 배포된 후 응용 프로그램이 실패하고 수동 작업이 필요합니다.

내가 뭘 빠트렸나요?

이 작업은 다음과 같이 수행합니다.

Import-Module WebAdministration
Set-ItemProperty IIS:\AppPools\app-pool-name -name processModel -value @{userName="user_name";password="password";identitytype=3}

http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel 에서 앱 풀을 실행할 사용자 유형의 들여쓰기 유형 숫자에 대한 설명과 참조는 여기에서 이 문서를 참조하십시오.

몇번의 실험 후에

여기 제 대답이 있습니다. IIS 8.5에서 작업한 적이 있습니다.

$credentials = (Get-Credential -Message "Please enter the Login credentials including Domain Name").GetNetworkCredential()

$userName = $credentials.Domain + '\' + $credentials.UserName

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.identityType -Value SpecificUser 

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.userName -Value $username

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.password -Value $credentials.Password

이제 당신은 이것을 조금 더 직접적으로 할 수 있는 것 같습니다.

appcmd set apppool junkapp /processmodel.password:junkpassword

저는 'ConvertFrom-SecureString'이 없는 powershell v4에 있습니다. 결국 다음과 같은 정보를 얻었습니다.

Import-Module WebAdministration

$cred = Get-Credential -Message "Please enter username and new password to reset IIS app pool password (for app pools running as username)"

$bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($cred.Password)
$plaintext = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)

$applicationPools = Get-ChildItem IIS:\AppPools | where { $_.processModel.userName -eq 
$cred.UserName }

foreach($pool in $applicationPools)
{
    $apppool = "IIS:\AppPools\" + $pool.Name

    Set-ItemProperty $apppool -name processModel.password -Value $plaintext
}

Write-Host "Application pool passwords updated..." -ForegroundColor Magenta 
Write-Host "" 
Read-Host -Prompt "Press Enter to exit"

언급URL : https://stackoverflow.com/questions/21415291/how-to-specify-application-pool-identity-user-and-password-from-powershell

반응형