#Detection
$TeamsClassic = Test-Path C:\Users\*\AppData\Local\Microsoft\Teams\current\Teams.exe
$TeamsNew = Get-ChildItem "C:\Program Files\WindowsApps" -Filter "MSTeams_*"
#Make sure Teams New Is installed as well at removing Classic
if(!$TeamsClassic -and $TeamsNew){
Write-Host "Found it!"
exit 0
}else{
exit 1
}
#Install https://github.com/FlorianSLZ/scloud/tree/main/Program%20-%20win32/Microsoft%20Teams%20(new)
$PackageName = "MicrosoftTeamsNEW"
$LogPath = "$env:ProgramData\Microsoft\IntuneManagementExtension\Logs\$PackageName-install.log"
# Start transcript logging
Start-Transcript -Path $LogPath -Force
###########################################################
# Teams Classic cleanup
###########################################################
# Function to uninstall Teams Classic
function Uninstall-TeamsClassic($TeamsPath) {
try {
$process = Start-Process -FilePath "$TeamsPath\Update.exe" -ArgumentList "--uninstall /s" -PassThru -Wait -ErrorAction STOP
if ($process.ExitCode -ne 0) {
Write-Error "Uninstallation failed with exit code $($process.ExitCode)."
}
}
catch {
Write-Error $_.Exception.Message
}
}
# Remove Teams Machine-Wide Installer
Write-Host "Removing Teams Machine-wide Installer"
$MachineWide = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -eq "Teams Machine-Wide Installer" }
if ($MachineWide) {
$MachineWide.Uninstall()
}
else {
Write-Host "Teams Machine-Wide Installer not found"
}
# Get all Users
$AllUsers = Get-ChildItem -Path "$($ENV:SystemDrive)\Users"
# Process all Users
foreach ($User in $AllUsers) {
Write-Host "Processing user: $($User.Name)"
# Locate installation folder
$localAppData = "$($ENV:SystemDrive)\Users\$($User.Name)\AppData\Local\Microsoft\Teams"
$programData = "$($env:ProgramData)\$($User.Name)\Microsoft\Teams"
if (Test-Path "$localAppData\Current\Teams.exe") {
Write-Host " Uninstall Teams for user $($User.Name)"
Uninstall-TeamsClassic -TeamsPath $localAppData
}
elseif (Test-Path "$programData\Current\Teams.exe") {
Write-Host " Uninstall Teams for user $($User.Name)"
Uninstall-TeamsClassic -TeamsPath $programData
}
else {
Write-Host " Teams installation not found for user $($User.Name)"
}
}
# Remove old Teams folders and icons
$TeamsFolder_old = "$($ENV:SystemDrive)\Users\*\AppData\Local\Microsoft\Teams"
$TeamsIcon_old = "$($ENV:SystemDrive)\Users\*\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Microsoft Teams*.lnk"
Get-Item $TeamsFolder_old | Remove-Item -Force -Recurse
Get-Item $TeamsIcon_old | Remove-Item -Force -Recurse
###########################################################
# New Teams installation
###########################################################
Write-Host "Installing new Teams"
& '.\teamsbootstrapper.exe' -p
# Stop transcript logging
Stop-Transcript