PowerShell
Check if PowerShell is available
powershell.exe
and what version that is installed.
prompt> $Host
or
prompt> $Host.Version
If PowerShell is an old version or not installed, then the installation is done by installing Windows Management Framework (
WMF) in the latest version. Take a look at the PowerShell site (
link) on MSDN or use your favorite search engine to find the latest version of WMF.
PowerShellGet
PowerShellGet is a PowerShell module that is used to get modules form a repository like
PowerShell Gallery.
Check if the module PowerShellGet is installed and if then in what version:
Get-Module -Name PowerShellGet -ListAvailable
The output is a
ModuleInfoGrouping object, where the Version property holds a
Version object.
Directory: C:\Program Files\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 1.0.0.1 PowerShellGet {Install-Module, Find-Module, Save-Module, Update-Module...}
Check what version that is the latest in the repository:
Find-Module -Name PowerShellGet -Repository PSGallery
Version Name Repository Description
------- ---- ---------- -----------
2.0.1 PowerShellGet PSGallery PowerShell module with commands for discovering,...
Compare the Version elements in the outputs.
The output is a
ModuleInfoGrouping object, where the Version property holds a Version object like the output from the Cmdlet
Get-Module
.
You might have several versions of the same module installed. Then you should compare on the latest version.
Install the latest version of the PowerShellGet module:
Install-Module -Name PowerShellGet -AllowClobber -Force
I have seen this warning (error?) some times:
WARNING: The version '1.1.4.0' of module 'PackageManagement' is currently in use. Retry the operation after closing the applications.
A PowerShell restart does not help. I have not looked deeper in this issue.
A new compare shows to versions of PowerShellGet installed side-by-side.
Directory: C:\Program Files\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 2.0.1 PowerShellGet {Find-Command, Find-DSCResource, Find-Module, Find-RoleCap...
Script 1.0.0.1 PowerShellGet {Install-Module, Find-Module, Save-Module, Update-Module...}
In general PowerShell will use the highest version number available when called without a specific version number.
Update the PowerShellGet module to the latest version:
Update-Module -Name PowerShellGet
I have seen that version 1.0.0.1 of PowerShellGet can't be updated, but the update doesn't fail.
Uninstall the module in all versions installed:
Uninstall-Module -Name PowerShellGet -AllVersions -Force
Again PowerShellGet in version 1.0.0.1 stand out as it is not uninstalled, but the uninstall doesn't fail.
If I try a version specific uninstall
Uninstall-Module -Name PowerShellGet -RequiredVersion '1.0.0.1'
then there is an error
PackageManagement\Uninstall-Package : No match was found for the specified search criteria and module names 'PowerShellGet'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.1.3.2\PSModule.psm1:2252 char:21
+ ... $null = PackageManagement\Uninstall-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstall-Package], Exception
+ FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.UninstallPackage
where it looks like a newer version is installed, but that does not show through
Get-Module -ListAvailable
. It might be the installation on my computer that has broken during several Install-Update-Uninstall sessions. I have not looked deeper in this issue.
Import the PowerShellGet module in the current PowerShell session with this statement:
Import-Module -Name PowerShellGet
This is usually not needed as the module is loaded when installed.
List functions available in module:
Get-Command -Module PowerShellGet
Remove the PowerShellGet module with
Remove-Module -Name PowerShellGet
but why???
AzureRM
It is the same Cmdlets as used with PowerShellGet above, but I go through the phases anyway to see the differences.
Check the installed and available version:
Get-Module -Name AzureRm -ListAvailable
Find-Module -Name AzureRM -Repository PSGallery
Install the latest version:
Install-Module -Name AzureRM -AllowClobber -Force
It will usually take several seconds before the installation begins. Until then no activity is shown in the PowerShell console - you just have to be a little patient.
Update to the latest version:
Update-Module -Name AzureRM
Uninstall the module:
Uninstall-Module -Name AzureRM -AllVersions -Force
Import the module in the current PowerShell session:
Import-Module -Name AzureRM
List functions available in module:
Get-Command -Module AzureRM
Remove the module from the current PowerShell session:
Remove-Module -Name AzureRM
Context
Windows 7 (Enterprise) and 10 (Pro), WMF 5