functions/Invoke-RenewAllPACertificates.ps1

function Invoke-RenewAllPACertificates {
    [CmdletBinding()]
    param (
        [switch]$SkipInstall
    )
    
    begin {
        $result = @()
        $paAccounts = Get-PAAccount -List
    }
    
    process {
        foreach ($paAccount in $paAccounts) {
            Set-PAAccount -ID $paAccount.id
            $certsDue = Get-PACertificate -List | Where-Object { $_.NotAfter.AddDays(-30) -le (Get-Date) }
            foreach ($cert in $certsDue)
            {
                $parts = $cert.Subject -split '='
                $mainDomain = $parts[1]
                Write-Host "Account $($paAccount.id) Certificate for $mainDomain is due for renewal"
                $oldThumbprint = $cert.Thumbprint
                $newCert = Invoke-PACertificateRenewal -MainDomain $MainDomain -SkipInstall:$SkipInstall
                $newThumbprint = $newCert.Thumbprint
                $newThumbprint = $oldThumbprint

                $result += [PSCustomObject]@{
                    MainDomain = $mainDomain
                    OldThumbprint = $oldThumbprint
                    NewThumbprint = $newThumbprint
                }
            }
        }
    }
    
    end {
        return $result
    }
}