The Publish-Module cmdlet publishes a module to an online NuGet-based gallery by using an API key,
stored as part of a user's profile in the gallery. You can specify the module to publish either by
the module's name, or by the path to the folder containing the module.
When you specify a module by name, Publish-Module publishes the first module that would be found
by running Get-Module -ListAvailable <Name>. If you specify a minimum version of a module to
publish, Publish-Module publishes the first module with a version that is greater than or equal to
the minimum version that you have specified.
Examples
Example 1: Publish a module
In this example, MyDscModule is published to the online gallery by using the API key to indicate the
module owner's online gallery account. If MyDscModule is not a valid manifest module that specifies
a name, version, description, and author, an error occurs.
In this example, MyDscModule is published to the online gallery by using the API key to indicate the
module owner's gallery account. The additional metadata provided is displayed on the webpage for the
module in the gallery. The owner adds two search tags for the module, relating it to Active
Directory; a brief release note is added. If MyDscModule is not a valid manifest module that
specifies a name, version, description, and author, an error occurs.
Publish-Module -Name "MyDscModule" -NuGetApiKey "11e4b435-6cb4-4bf7-8611-5162ed75eb73" -LicenseUri "https://contoso.com/license" -Tag "Active Directory","DSC" -ReleaseNote "Updated the ActiveDirectory DSC Resources to support adding users."
Parameters
-Confirm
Prompts you for confirmation before running the Publish-Module.
Parameter properties
Type:
SwitchParameter
Default value:
False
Supports wildcards:
False
DontShow:
False
Aliases:
cf
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-FormatVersion
Accepts only valid values specified by the ValidateSet attribute.
Specifies the URL of an icon for the module. The specified icon is displayed on the gallery webpage
for the module.
Parameter properties
Type:
Uri
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-LicenseUri
Specifies the URL of licensing terms for the module you want to publish.
Parameter properties
Type:
Uri
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-Name
Specifies the name of the module that you want to publish. Publish-Module searches for the
specified module name in $Env:PSModulePath.
Parameter properties
Type:
String
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
ModuleNameParameterSet
Position:
Named
Mandatory:
True
Value from pipeline:
False
Value from pipeline by property name:
True
Value from remaining arguments:
False
-NuGetApiKey
Specifies the API key that you want to use to publish a module to the online gallery. The API key is
part of your profile in the online gallery, and can be found on your user account page in the
gallery. The API key is NuGet-specific functionality.
Parameter properties
Type:
String
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-Path
Specifies the path to the module that you want to publish. This parameter accepts the path to the
folder that contains the module.
Parameter properties
Type:
String
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
ModulePathParameterSet
Position:
Named
Mandatory:
True
Value from pipeline:
False
Value from pipeline by property name:
True
Value from remaining arguments:
False
-ProjectUri
Specifies the URL of a webpage about this project.
Parameter properties
Type:
Uri
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-ReleaseNotes
Specifies a string containing release notes or comments that you want to be available to users of
this version of the module.
Parameter properties
Type:
String[]
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-Repository
Specifies the friendly name of a repository that has been registered by running
Register-PSRepository. The repository must have a PublishLocation, which is a valid NuGet URI.
The PublishLocation can be set by running Set-PSRepository.
Parameter properties
Type:
String
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-RequiredVersion
Specifies the exact version of a single module to publish.
Parameter properties
Type:
Version
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
ModuleNameParameterSet
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-Tags
Adds one or more tags to the module that you are publishing. Example tags include
DesiredStateConfiguration, DSC, DSCResourceKit, or PSModule. Separate multiple tags with commas.
Parameter properties
Type:
String[]
Default value:
None
Supports wildcards:
False
DontShow:
False
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
-WhatIf
Shows what would happen if the Publish-Module runs. The cmdlet is not run.
Parameter properties
Type:
SwitchParameter
Default value:
False
Supports wildcards:
False
DontShow:
False
Aliases:
wi
Parameter sets
(All)
Position:
Named
Mandatory:
False
Value from pipeline:
False
Value from pipeline by property name:
False
Value from remaining arguments:
False
CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
-InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable,
-ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see
about_CommonParameters.
Inputs
PSModuleInfo
Outputs
None
Publish-Module shows no output if a module is published successfully.
Notes
Publish-Module runs on PowerShell 3.0 or later releases of PowerShell, on Windows 7 or Windows
2008 R2 and later releases of Windows.
Publishing a module requires metadata that is displayed on the gallery page for the module. Required
metadata includes the module name, version, description, and author. Most metadata is taken from the
module manifest, but some metadata can be specified in Publish-Module parameters, such as Tag,
ReleaseNote, IconUri, ProjectUri, and LicenseUri. For more information, see
Package manifest values that impact the PowerShell Gallery UI.