Skip to content

Add-MSTTeamsAppInstallation

Teams: Add 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(Mandatory = $true, ParameterSetName = 'byTeam')]
    [Parameter(Mandatory = $true, ParameterSetName = 'byUser')]
    [string]$AppId,
    [Parameter(ParameterSetName = 'byTeam')]
    [Parameter(ParameterSetName = 'byUser')]
    [string]$Permissions
)

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

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

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

        if ($null -eq $result -or $result.Count -eq 0) {
            Write-Output "No 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

RSC permissions for the Teams App, e.g. "TeamSettings.Read.Group ChannelMessage.Read.Group"

An interactive directory of PowerShell scripts.