Functions/Update-InstalledModule.ps1


function Update-InstalledModule {
    [CmdletBinding(SupportsShouldProcess)]
    param (
        [Parameter()] [string] $ModuleName
    )

    $excludeList = "Az.|Microsoft.Graph.Beta.|Microsoft.Entra."
    $result = @()

    if ($ModuleName) {
        $installedModules = Get-InstalledModule -Name $ModuleName
    } else {
        $installedModules = Get-InstalledModule
    }
    $installedModules | Where-Object Name -NotMatch $excludeList | ForEach-Object {

        Write-Verbose $_.Name

        $foundModule = Find-Module -Name $_.Name
        $obj = [PSCustomObject]@{
            Name       = $_.Name
            OldVersion = $_.Version
            NewVersion = $foundModule.Version
            Compare = (Compare-Object $_.Version $foundModule.Version).SideIndicator | Out-String
        }
        $result += $obj

        if ($WhatIfPreference ) {



        } else {

            Update-Module $_.Name -AcceptLicense -Scope AllUsers -Force

        }

    }

    return $result

}