Now that PowerCLI is a module and in the PowerShell Gallery there have been a lot of releases and bug fixes, you would be forgiven for not having the latest version installed or even knowing what the latest version is.

With this in mind and with the latest 6.5.3 version triggering this in my mind, I created a function that checks your installed PowerCLI version against the one thats in the PowerShell Gallery online and lets you know if there is a new version.

Now of course this can be run manually and it will return the results letting you know which modules are out of date:

And once completed of course its easy to update PowerCLI to the latest version:

Even better why not add it to your profile. It does take a couple of seconds to run so maybe you will want to run it on a certain day past a certain time in your profile so it doesn’t slow down every launch of PowerShell you have, here is an example of what I have in my profile where I check every Wednesday after 2PM.

if ( ((Get-Date).tostring('%H') -ge "14" ) -and ( (Get-Date).DayofWeek -eq "Wednesday" ) ) { Check-PowerCLIUpdate }

Check-PowerCLIUpdate Script

Here is the function that allows you to check for updates:

Function Check-PowerCLIUpdate { #Based on great module by Jeff Hicks here: http://jdhitsolutions.com/blog/powershell/5441/check-for-module-updates/ [cmdletbinding()] Param() # Getting installed modules $modules = Get-Module -ListAvailable VMware* | Sort Version -Descending | Select-object -Unique #Filter to modules from the PSGallery $gallery = $modules.where({$_.repositorysourcelocation}) # Comparing to online versions $AllUpdatedModules = @() foreach ($module in $gallery) { #find the current version in the gallery Try { $online = Find-Module -Name $module.name -Repository PSGallery -ErrorAction Stop } Catch { Write-Warning "Module $($module.name) was not found in the PSGallery and therefore not checked for an update" } #compare versions if ($online.version -gt $module.version) { $AllUpdatedModules += new-object PSObject -Property @{ Name = $module.name InstalledVersion = $module.version OnlineVersion = $online.version Update = $True Path = $module.modulebase } } } $AllUpdatedModules | Format-Table #Check completed }

-Alan

Share this: Email

Print

Twitter

Facebook

Reddit

