Managing Resources with PowerShellGet v3
The cmdlet names have changed in PowerShellGet v3. Instead of Install-Module, you will use Install-PSResource. Itโs actually the same cmdlet for all resources such as scripts and DSC resources.
Install-PSResource -Name Universal
The Install-PSResource cmdlet supports similar parameters to Install-Module but have slightly different names and meanings.
For example, -AllowClobber was optional in Install-Module but is now the default for Install-PSResource. You can use -NoClobber to change this behavior.
Install-PSResource -Name dbatools -Version '1.1.41' -NoClobber
Code language: JavaScript (javascript)
Changing Installation Scope
The -Scope parameter can be used to install the module for CurrentUser or AllUsers. CurrentUser is the default setting. You will need to be running as administrator to install to all users.
Install-PSResource -Name 'PSWindowsUpdate' -Scope AllUsers
Code language: JavaScript (javascript)
Installing DSC Resources
You can also install DSC resources with Install-PSResource. The syntax is very much the same as with modules.
Install-PSResource -Name 'NetworkingDsc'
Code language: JavaScript (javascript)
Saving a Module
Much like Save-Module, you can use Save-PSResource to download a module for deployment to offline machines or to save into your own repository. Save-PSResource supports parameters like -AsNupkg and -IncludeXml to change what is downloaded. NuPkg files are special ZIP files that contain manifest information and are used with the NuGet package management system.
Save-PSResource -Name Universal -AsNupkg -Path .\universal.nupkg
Code language: CSS (css)
List Installed Modules
You can use Get-PSResource to list modules, and other resources, that have been installed with PowerShellGet.
Get-PSResource
Uninstall a Module
You can use the Uninstall-PSResource cmdlet to uninstall a module.
Uninstall-PSResource -Name Universal
Publish a Module
You can publish modules, an other resources, to repositories using Publish-PSResource.
Publish-PSResource -Path .\universal -ApiKey 'Test'
Code language: JavaScript (javascript)
Working with Repositories in PowerShellGet v3
By default, you will have the PowerShell Gallery defined as a repository. It will not be trusted but you can use the -TrustRepository cmdlet on the *-PSResource cmdlets to avoid the prompt to trust the repository.
Install-PSResource -Name 'PendingReboot' -TrustRepository
Code language: JavaScript (javascript)
Trust a Repository
You can trust a repository by using the Set-PSResourceRepository cmdlet. You wonโt be prompted to trust the repository with each call from now on.
Set-PSResourceRepository -Name PSGallery -Trusted
Code language: JavaScript (javascript)
Register a Repository
You can register a repository by using the Register-PSResourceRepository cmdlet.
Register-PSResourceRepository -Name Local -URL \\server\share
To reverse the change, use Unregister-PSResourceRepository.
Unregister-PSResourceRepository -Name Local
Find Resources with PowerShellGet v3
To find resources with PowerShellGet, youโll use the Find-PSResource cmdlet.
Find-PSResource -Name Universal
Find Resources by Type
You can specify the -Type parameter to look for resources by type.
Find-PSResource -Name PSDscResources -Type DscResource
Find Resources by Tag
You can use the -Tag parameter to look up resources with tags.
Find-PSResource -Tag universal-dashboard
Find Resources by Wildcard Search
You can also use wildcard searches to find resources that contain a pattern.
Find-PSResource -Name Universal*
Backwards Compatibility
Since PowerShellGet v2 and v3 are very different, the PowerShell team has released a compatibility module so that you can continue to use the original syntax and commands.
Youโll need to install the CompatPowerShellGet module in order to use the previous commands with the new version of PowerShellGet.
Install-PSResource -Name CompatPowerShellGet
Now, you can use cmdlets like Install-Module and it will map the command to Install-PSResource automatically.
Install-Module -Name dbatools -AllowPrerelease
Internally, this executes the following.
Install-PSResource -Name dbatools -Prerelease
The command will work as expected but you will see a warning.
Install-Module -Name dbatools -AllowPrerelease
WARNING: The cmdlet 'Install-Module' is deprecated, please use 'Install-PSResource'.
Code language: JavaScript (javascript)I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services โ all in one place.
Explore Hospitals
One area that would strengthen this reference is discussing how PowerShellGet/PSResourceGet fits into enterprise software supply chain management. In practice, many organizations avoid installing directly from PSGallery in CI runners or production hosts and instead mirror approved modules into an internal repository (Azure Artifacts, Nexus, or Artifactory) to improve reproducibility and reduce exposure to upstream package tampering. It would also be useful to cover module version pinning, repository priority strategies, signed modules, offline bootstrap scenarios, and cache management for ephemeral build agents. These operational details often become more important than the cmdlet syntax itself once PowerShell modules are treated as deployable dependencies in large-scale automation platforms.