This is using the latest stable version "1.4.6" of "PackageManagement" as of 2020-02-26 on Windows PowerShell 5.1
I've found that when errors happen in "Get-InstalledModule" and "Uninstall-Module" commands, errors is not added to $Error variable, and $? is not set to false unless $ErrorActionPreference is set to 'Stop'. Also, reading the error messages, I see that reported commandlet ran according to the error messages added to the terminal, are "PackageManagement\Uninstall-Package" for "Uninstall-Module" and "PackageManagement\Get-Package" for "Get-InstalledModule". When using these commands, $? is righfully set to $false if they fail, but these commands are not adding error to $Error either.
Code to reproduce (designed to run line per line)
# Settings
## PowerShell Preferences
$ErrorActionPreference = 'Continue' # Default for new PowerShell session
# PackageManagement
## Import
Import-Module -Name 'PackageManagement' -Force
## Output imported version of the module
$(Get-Module -Name 'PackageManagement').'Version'.ToString()
# Assets
## Fictive module
$Name = 'SomeModuleName'
$Version = '1.2.3'
# Get
## Using "Get-InstalledModule"
Get-InstalledModule -Name $Name -RequiredVersion $Version
$?
$Error[0]
## Using "PackageManagement\Get-Package"
PackageManagement\Get-Package -Name $Name -RequiredVersion $Version
$?
$Error[0]
# Uninstall
## Using "Uninstall-Module"
Uninstall-Module -Name $Name -RequiredVersion $Version
$?
$Error[0]
## Using "PackageManagement\Uninstall-Package"
PackageManagement\Uninstall-Package -Name $Name -RequiredVersion $Version
$?
$Error[0]
Output showing wrong cmdlet is reported in the error + $? is not set correctly.
PS C:\Users\olavb> $ErrorActionPreference = 'Continue' # Default for new PowerShell session
PS C:\Users\olavb> Import-Module -Name 'PackageManagement' -Force
PS C:\Users\olavb> $(Get-Module -Name 'PackageManagement').'Version'.ToString()
1.4.6
PS C:\Users\olavb> $Name = 'SomeModuleName'
$Version = '1.2.3'
PS C:\Users\olavb> Get-InstalledModule -Name $Name -RequiredVersion $Version
PackageManagement\Get-Package : No match was found for the specified search criteria and module names 'SomeModuleName'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.2.3\PSModule.psm1:9423 char:9
+ PackageManagement\Get-Package @PSBoundParameters | Microsoft. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...lets.GetPackage:GetPackage) [Get-Package], Exception
+ FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackage
PS C:\Users\olavb> $?
True
PS C:\Users\olavb> PackageManagement\Get-Package -Name $Name -RequiredVersion $Version
PackageManagement\Get-Package : No package found for 'SomeModuleName'.
At line:1 char:1
+ PackageManagement\Get-Package -Name $Name -RequiredVersion $Version
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...lets.GetPackage:GetPackage) [Get-Package], Exception
+ FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackage
PS C:\Users\olavb> $?
False
PS C:\Users\olavb> Uninstall-Module -Name $Name -RequiredVersion $Version
PackageManagement\Uninstall-Package : No match was found for the specified search criteria and module names 'SomeModuleName'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.2.3\PSModule.psm1:12657 char:21
+ ... $null = PackageManagement\Uninstall-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstall-Package], Exception
+ FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.UninstallPackage
PS C:\Users\olavb> $?
True
PS C:\Users\olavb> PackageManagement\Uninstall-Package -Name $Name -RequiredVersion $Version
PackageManagement\Uninstall-Package : No package found for 'SomeModuleName'.
At line:1 char:1
+ PackageManagement\Uninstall-Package -Name $Name -RequiredVersion $Ver ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstall-Package], Exception
+ FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.UninstallPackage
PS C:\Users\olavb> $?
False
PS C:\Users\olavb>
This is using the latest stable version "1.4.6" of "PackageManagement" as of 2020-02-26 on Windows PowerShell 5.1
I've found that when errors happen in "Get-InstalledModule" and "Uninstall-Module" commands, errors is not added to $Error variable, and $? is not set to false unless $ErrorActionPreference is set to 'Stop'. Also, reading the error messages, I see that reported commandlet ran according to the error messages added to the terminal, are "PackageManagement\Uninstall-Package" for "Uninstall-Module" and "PackageManagement\Get-Package" for "Get-InstalledModule". When using these commands, $? is righfully set to $false if they fail, but these commands are not adding error to $Error either.
Code to reproduce (designed to run line per line)
Output showing wrong cmdlet is reported in the error + $? is not set correctly.
This all works for the "Find-Package" command.