Update-InstalledModules.ps1


<#PSScriptInfo
 
.VERSION 1.0.1
 
.GUID 8202c298-a89d-4a91-8971-991cfb866d4e
 
.AUTHOR arnab-roy-chowdhury
 
.COMPANYNAME
 
.COPYRIGHT
 
.TAGS modules, utility
 
.LICENSEURI https://github.com/Arnab-Developer/UpdateInstalledModules/blob/main/LICENSE.txt
 
.PROJECTURI https://github.com/Arnab-Developer/UpdateInstalledModules
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
 
 
.PRIVATEDATA
 
#>


<#
 
.DESCRIPTION
 Update installed modules
 
#>
 

Param()


class PowerShellModuleUtility
{
    hidden [string] $ModuleName

    PowerShellModuleUtility([string] $ModuleName)
    {
        $this.ModuleName = $ModuleName
    }

    [bool] IsModuleUpdated()
    {
        $repositoryModule = Find-Module -Name $this.ModuleName
        $installedModule = Get-InstalledModule -Name $this.ModuleName
        return $installedModule.Version -eq $repositoryModule.Version
    }

    [void] UpdateModule()
    {
        Update-Module -Name $this.ModuleName
    }
}

$installedModules = Get-InstalledModule
foreach($installedModule in $installedModules)
{
    $utility = [PowerShellModuleUtility]::new($installedModule.Name)
    if($utility.IsModuleUpdated() -eq $true)
    {
        Write-Host "Already updated:" $installedModule.Name        
    }
    else
    {
        $utility.UpdateModule()
        Write-Host "Updated:" $installedModule.Name
    }
}