Skip to content

Remove-MSTTeamsAppInstallation

Teams: Removes a Teams App installation

#Requires -Version 5.1

[CmdletBinding()]
Param(
    [Parameter(Mandatory = $true, ParameterSetName = 'byTeam')]
    [string]$TeamID,
    [Parameter(Mandatory = $true, ParameterSetName = 'byUser')]
    [string]$UserID,
    [Parameter(ParameterSetName = 'byTeam')]
    [Parameter(ParameterSetName = 'byUser')]
    [string]$AppId,
    [Parameter(ParameterSetName = 'byTeam')]
    [Parameter(ParameterSetName = 'byUser')]
    [string]$AppInstallationId
)

Process {
    try {
        [string[]]$Properties = @('DisplayName', 'TeamsAppId', 'Version', 'TeamsAppDefinitionId')
        [hashtable]$cmdArgs = @{'ErrorAction' = 'Stop'}

        if ($PSCmdlet.ParameterSetName -eq 'byTeam') {
            $cmdArgs.Add('TeamID', $TeamID)
        }
        else {
            $cmdArgs.Add('UserID', $UserID)
        }
        if ($PSBoundParameters.ContainsKey('AppId')) {
            $cmdArgs.Add('AppId', $AppId)
        }
        if ($PSBoundParameters.ContainsKey('AppInstallationId')) {
            $cmdArgs.Add('AppInstallationId', $AppInstallationId)
        }

        $null = Remove-TeamsAppInstallation @cmdArgs
        $cmdArgs.Remove('AppId')
        $cmdArgs.Remove('AppInstallationId')
        $result = Get-TeamsAppInstallation @cmdArgs | Sort-Object DisplayName | Select-Object $Properties

        if ($null -eq $result -or $result.Count -eq 0) {
            Write-Output "No remaining app installations found"
            return
        }
        foreach ($item in $result) {
            $item | Add-Member -NotePropertyName Timestamp -NotePropertyValue (Get-Date -Format 'yyyy-MM-dd HH:mm:ss') -PassThru -Force
        }
    }
    catch { throw }
}

Team identifier in Microsoft Teams

User identifier in Microsoft Teams

Teams App identifier in Microsoft Teams

Installation identifier of the Teams App

An interactive directory of PowerShell scripts.