diff --git a/Fix-MicrosoftTeams.ps1 b/Fix-MicrosoftTeams.ps1 index b43d9c0..9b2fdf3 100644 --- a/Fix-MicrosoftTeams.ps1 +++ b/Fix-MicrosoftTeams.ps1 @@ -1,10 +1,28 @@ -## Stop all instances of Teams -End-Process -Name "Teams" -Match -Force +. 'C:\Users\dyoder\Documents\Emberkom\Data\Projects\development\management-scripts\Tools.ps1' +# Make sure Microsoft Teams is installed +If ( Test-Path "${Env:LocalAppData}\Microsoft\Teams\Update.exe" ) { -## Remove all cached content -$CacheDir = "${Env:LOCALAPPDATA}\Microsoft\Teams" -If ( Test-Path $CacheDir ) { - LogMsg "Removing all cached data for Microsoft Teams" - Try { Remove-Item $CacheDir -Recurse -Force } - Catch { LogErr $_.Exception.Message } -} Else { LogMsg "Could not clear cached data for Microsoft Teams because the directory could not be found: ${CacheDir}" } + # Get all running Teams processes + $ProcessList = (Get-Process -Name 'teams' -ErrorAction SilentlyContinue) + + If ( $ProcessList ) { + LogMsg "Stopping Microsoft Teams" + Try { $ProcessStopped = $true ; $ProcessList | Stop-Process -Force } + Catch { LogErr $_.Exception.Message } + } Else { $ProcessStopped = $false } + + # Remove all cached content + $CacheDir = "${Env:AppData}\Microsoft\Teams" + If ( Test-Path $CacheDir ) { + LogMsg "Removing all cached data for Microsoft Teams" + Try { Remove-Item $CacheDir -Recurse -Force } + Catch { LogErr $_.Exception.Message } + } Else { LogMsg "Could not clear cached data for Microsoft Teams because the directory could not be found: ${CacheDir}" } + + # Restart Teams if we needed to close it before clearing the cache + If ( $ProcessStopped ) { + LogMsg "Starting Microsoft Teams" + Try { Start-Process "${Env:LocalAppData}\Microsoft\Teams\Update.exe" -ArgumentList "--processStart ""Teams.exe""" } + Catch { LogErr $_.Exception.Message } + } +} Else { LogMsg "Cannot clear cache for Microsoft Teams because it isn't installed" }