When you use Find-Module by default all repositories are searched
£> Find-Module -Name Pester | ft Version, Name, Repository -a
Version Name Repository
——- —- ———-
3.2.0 Pester PSGallery
3.2.0 Pester PowerShellModules
If you don’t give a module name that could be a lot of data to sort through. If you are running an internal repository you may want to check that repository first and only use other repositories if that one doesn’t contain the module.
£> Find-Module -Name Pester -Repository PowerShellModules | ft Version, Name, Repository -a
Version Name Repository
——- —- ———-
3.2.0 Pester PowerShellModules
This means that you have to type the repository name each time. It would be better if you could make a particular repository the default. One way to do this is to define default parameters. This functionality was introduced in PowerShell 3.0
£> $PSDefaultParameterValues.Add("Find-Module:Repository", ‘PowerShellModules’)
£> $PSDefaultParameterValues
Name Value
—- —–
Find-Module:Repository PowerShellModules
£> Find-Module -Name Pester | ft Version, Name, Repository -a
Version Name Repository
——- —- ———-
3.2.0 Pester PowerShellModules
You can override the default if you wish
£> Find-Module -Name Pester -Repository PSGallery | ft Version, Name, Repository -a
Version Name Repository
——- —- ———-
3.2.0 Pester PSGallery
You can do the same for install-module so that it will default to your internal repository
£> $PSDefaultParameterValues.Add("Install-Module:Repository", ‘PowerShellModules’)
£> Install-Module -Name Pester -Force -Verbose
VERBOSE: Repository details, Name = ‘PowerShellModules’, Location = ‘http://localhost:81/nuget/PowerShellModules’;
IsTrusted = ‘True’; IsRegistered = ‘True’.
VERBOSE: Repository details, Name = ‘PowerShellModules’, Location = ‘http://localhost:81/nuget/PowerShellModules’;
IsTrusted = ‘True’; IsRegistered = ‘True’.
VERBOSE: Using the specified source names : ‘PowerShellModules’.
VERBOSE: Getting the provider object for the OneGet Provider ‘NuGet’.
VERBOSE: The specified Location is ‘http://localhost:81/nuget/PowerShellModules’ and OneGetProvider is ‘NuGet’.
VERBOSE: In PSModule Provider – ‘Get-InstalledPackage’.
VERBOSE: The specified Location is ‘NuGet’ and OneGetProvider is ‘NuGet’.
VERBOSE: Downloading module ‘Pester’ with version ‘3.2.0’ from the repository
‘http://localhost:81/nuget/PowerShellModules’.
VERBOSE: NuGet: Installing ‘Pester 3.2.0’.
VERBOSE: NuGet: Successfully installed ‘Pester 3.2.0’.
VERBOSE: Module ‘Pester’ was installed successfully.
-Force was used as the module is already installed.
Your default parameters now look like this
£> $PSDefaultParameterValues
Name Value
—- —–
Find-Module:Repository PowerShellModules
Install-Module:Repository PowerShellModules
Add the two lines
$PSDefaultParameterValues.Add("Find-Module:Repository", ‘PowerShellModules’)
$PSDefaultParameterValues.Add("Install-Module:Repository", ‘PowerShellModules’)
To your profile and your defaults will be available every time you start PowerShell