Share via


Publish-Module

Publishes a specified module from the local computer to an online gallery.

Syntax

Publish-Module
       -Name <String>
       [-RequiredVersion <Version>]
       -NuGetApiKey <String>
       [-Repository <String>]
       [-FormatVersion <Version>]
       [-ReleaseNotes <String[]>]
       [-Tags <String[]>]
       [-LicenseUri <Uri>]
       [-IconUri <Uri>]
       [-ProjectUri <Uri>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Publish-Module
       -Path <String>
       -NuGetApiKey <String>
       [-Repository <String>]
       [-FormatVersion <Version>]
       [-ReleaseNotes <String[]>]
       [-Tags <String[]>]
       [-LicenseUri <Uri>]
       [-IconUri <Uri>]
       [-ProjectUri <Uri>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

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.

Publish-Module -Name "MyDscModule" -NuGetApiKey "11e4b435-6cb4-4bf7-8611-5162ed75eb73"

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.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FormatVersion

Accepts only valid values specified by the ValidateSet attribute.

For more information, see ValidateSet Attribute Declaration and ValidateSetAttribute.

Type:Version
Accepted values:2.0
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IconUri

Specifies the URL of an icon for the module. The specified icon is displayed on the gallery webpage for the module.

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LicenseUri

Specifies the URL of licensing terms for the module you want to publish.

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Specifies the name of the module that you want to publish. Publish-Module searches for the specified module name in $Env:PSModulePath.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ProjectUri

Specifies the URL of a webpage about this project.

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ReleaseNotes

Specifies a string containing release notes or comments that you want to be available to users of this version of the module.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RequiredVersion

Specifies the exact version of a single module to publish.

Type:Version
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Shows what would happen if the Publish-Module runs. The cmdlet is not run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

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.