schtasks /change /tn $ScheduledTaskName /s '<Target Machine>' /u $AdminUserName /p $AdminRecord.password /ru $Params.user /rp $Params.newPassword
if( $LastExitCode -ne 0 ) {
exit $LastExitCode
}
[CmdletBinding()]
param (
[Parameter(ValueFromPipeline=$true)]
[string]
$B64Input
)
$ErrorActionPreference = "Stop"
$DebugPreference = 'Continue'
function ConvertFrom-B64 {
param (
[string] $B64String
)
try {
$Json = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($B64String))
$Output = $Json | ConvertFrom-Json
}
catch {
Write-Error "Failed to convert Base64 string: $B64String"
}
return $Output
}
# JSONデータは、Base64エンコードされた文字列としてゲートウェイに渡されます。
$Params = ConvertFrom-B64 -B64String $B64Input
Write-Debug "Running Post-Rotation Script on: $($Params.userRecordUid)"
# Base64エンコードされたJSON文字列から添付されたリソースレコードを変換し、
# 管理者レコードのUIDでフィルタリングして、
# サービスの「Log On As」プロパティを更新するために必要な管理者レコードを見つけます。
$ResourceCredentials = ConvertFrom-B64 -B64 $Params.records
$AdminRecord = $ResourceCredentials | Where-Object { $_.uid -eq '<Admin Record UID>' }
$AdminUserName = "$($AdminRecord.login)@$($AdminRecord.domainName)"
$ScheduledTaskName = '<Scheduled Task Name>'
Write-Debug "Updating Scheduled Task: $ScheduledTaskName"
schtasks /change /tn $ScheduledTaskName /s '<Target Machine>' /u $AdminUserName /p $AdminRecord.password /ru $Params.user /rp $Params.newPassword
if( $LastExitCode -ne 0 ) {
exit $LastExitCode
}