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
'programing' 카테고리의 다른 글
$profile의 기본값을 새 값으로 변경할 수 있습니까? (0) | 2023.08.14 |
---|---|
문자열의 줄 위에 반복합니다. (0) | 2023.08.14 |
웹킷에서 깜박임 방지 웹킷 변환 (0) | 2023.08.14 |
INSTALL_PARSE_FAILED_ 처리 방법제거하지 않고 일관성이 없는_인증서? (0) | 2023.08.14 |
인수를 사용하여 PowerShell에서 Excel 매크로 호출 (0) | 2023.08.14 |