Save-Module
您可以使用命令手动下载模块 zip 。
Find-Module -Name 'XXX' -Repository 'PSGallery' | Save-Module -Path 'E:\Modules'
从这里您可以使用完全限定名称导入模块,如下所示:
Import-Module -FullyQualifiedName 'E:\Modules\XXX'
或者通过将您的目标文件夹添加到PSModulePath
您之前所做的那样。
$modulePath = [Environment]::GetEnvironmentVariable('PSModulePath')
$modulePath += ';E:\Modules'
[Environment]::SetEnvironmentVariable('PSModulePath', $modulePath)
Get-Module
然后,您可以使用cmdlet检查模块是否已导入。
如果您使用该Import-Module
命令,可能会有些痛苦,尤其是在您有很多模块的情况下。因此,您可以将方法包装在这样的函数中:
function Install-ModuleToDirectory {
[CmdletBinding()]
[OutputType('System.Management.Automation.PSModuleInfo')]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
$Name,
[Parameter(Mandatory = $true)]
[ValidateScript({ Test-Path $_ })]
[ValidateNotNullOrEmpty()]
$Destination
)
# Is the module already installed?
if (-not (Test-Path (Join-Path $Destination $Name))) {
# Install the module to the custom destination.
Find-Module -Name $Name -Repository 'PSGallery' | Save-Module -Path $Destination
}
# Import the module from the custom directory.
Import-Module -FullyQualifiedName (Join-Path $Destination $Name)
return (Get-Module)
}
Install-ModuleToDirectory -Name 'XXX' -Destination 'E:\Modules'