eng/scripts/Reset-ExpiredInvites.ps1 (12 lines of code) (raw):
param(
$Repo,
$Permission = 'pull'
)
."$PSScriptRoot/common.ps1"
$invitations = GetInvitations $Repo
$targetInvitations = $invitations.Where({ $_.expired -eq $true })
foreach ($invitation in $targetInvitations) {
Write-Host "Re-inviting $(Secretize $invitation.invitee.login) (id: $($invitation.Id))"
gh api "repos/$Repo/invitations/$($invitation.id)" --method DELETE | Out-Null
gh api "repos/$Repo/collaborators/$($invitation.invitee.login)" --method PUT --field permission=$Permission | Out-Null
}