Public/Get-ModuleUpdate.ps1
enum ModuleUpdateStatus { Unknown PSGalleryNotFound UpToDate UpdateNeed } class ModuleInfo { [string]$Name [version]$LocalVersion [version]$GalleryVersion [ModuleUpdateStatus]$UpdateStatus } <# .SYNOPSIS Übersicht von Module die aktualisiert werden könnte. .DESCRIPTION Alle lokalen installierten Modulen werden mit einer vorhandenen Version in der Power Shell Gallery verglichen obe eine neuere Modulversion vorhanden ist. #> function Get-ModuleUpdate { [CmdletBinding()] param ( [Parameter()] [string]$Name = '*', [Parameter()] [switch]$OnlyModulesNeededUpdate ) begin { } process { Get-Module -Name $Name -ListAvailable | Sort-Object -Property 'Name' | ForEach-Object -Process { $GalleyModule = $_ | Find-Module -ErrorAction Ignore | Sort-Object -Property 'Version' -Descending | Select-Object -First 1 $Result = [ModuleInfo]::new() $Result.Name = $_.Name $Result.LocalVersion = $_.Version $Result.UpdateStatus = [ModuleUpdateStatus]::PSGalleryNotFound if ($null -ne $GalleyModule) { $Result.GalleryVersion = $GalleyModule.Version $Result.UpdateStatus = [ModuleUpdateStatus]::UpToDate if ([version]($GalleyModule.Version) -gt $_.Version) { $Result.UpdateStatus = [ModuleUpdateStatus]::UpdateNeed } } if ($OnlyModulesNeededUpdate) { if($Result.UpdateStatus -eq [ModuleUpdateStatus]::UpdateNeed) { return $Result } } else { return $Result } } } end { } } <# Get-ModuleUpdate -Name Pester Get-ModuleUpdate -OnlyModulesNeededUpdate #> |