Skip to content

Commit 9861fbe

Browse files
see changelog for v1.8.1
1 parent c8743ad commit 9861fbe

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

PSScriptTools.psd1

0 Bytes
Binary file not shown.

changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log for PSScriptTools
22

3+
## v1.8.1
4+
5+
+ minor corrections to `Compare-Module` (Issue #21)
6+
37
## v1.8.0
48

59
+ fixed typo in `Write-Detail` (Thanks @AndrewPla)

functions/Compare-Module.ps1

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Function Compare-Module {
5858
$fmoParams.Add("Name", $Name)
5959
}
6060
Try {
61-
$online = Find-Module @fmoParams
61+
$online = @(Find-Module @fmoParams)
6262
}
6363
Catch {
6464
Write-Warning "Failed to find online module(s). $($_.Exception.message)"
@@ -67,7 +67,7 @@ Function Compare-Module {
6767
$progParam.percentComplete = 80
6868
Write-Progress @progParam
6969

70-
$data = $online | Where-Object {$installed.name -contains $_.name} |
70+
$data = ($online).Where( {$installed.name -contains $_.name}) |
7171
Select-Object -property Name,
7272
@{Name = "OnlineVersion"; Expression = {$_.Version}},
7373
@{Name = "InstalledVersion"; Expression = {
@@ -78,15 +78,17 @@ Function Compare-Module {
7878
PublishedDate,
7979
@{Name = "UpdateNeeded"; Expression = {
8080
$name = $_.Name
81-
#there could me multiple versions installed
82-
$installedVersions = $installed.Where( {$_.name -eq $name}).Version | Sort-Object
83-
foreach ($item in $installedVersions) {
84-
If ($_.Version -gt $item) {
85-
$result = $True
86-
}
87-
else {
88-
$result = $False
89-
}
81+
#there could be multiple versions installed
82+
#only need to compare the last one
83+
$mostRecentVersion = $installed.Where( {$_.name -eq $name}).Version |
84+
Sort-Object -Descending | Select-Object -first 1
85+
86+
#need to ensure that PowerShell compares version objects and not strings
87+
If ([version]$_.Version -gt [version]$mostRecentVersion) {
88+
$result = $True
89+
}
90+
else {
91+
$result = $False
9092
}
9193
$result
9294
}
@@ -102,7 +104,6 @@ Function Compare-Module {
102104
else {
103105
Write-Warning "No local module or modules found"
104106
}
105-
106107
} #Progress
107108

108109
End {

0 commit comments

Comments
 (0)