PowerShell for Windows Admins

Jan 6 2015   11:50AM GMT

A use for default parameters – default powershellget repository

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

Tags:
Powershell

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

 Comment on this Post

 
There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

Share this item with your network: