PowerShell v5 - 如何将模块安装到没有互联网连接的计算机?

时间:2016-05-27 14:55:34

标签: powershell powershell-v5.0 powershellget

我有一台机器(v3,互联网,无管理员访问权限),我用它来下载WMF 5.0并设置另一台机器(v5,没有互联网,管理员访问权限)。现在,我想在运行v5但没有互联网连接的机器上使用PowerShellGet中的一些模块。

我需要一个下载* .psm1文件的选项,我可以将其复制并使用。 就像我们可以从GitHub下载选项一样。

有类似问题和解决方法的任何人?

2 个答案:

答案 0 :(得分:7)

在PowerShell 3计算机上安装Package Management Module,然后使用Save-Module ...

或者在某处设置ProGet"在边缘"您的网络,并让它从公共PowerShellGallery镜像您想要的内部客户端模块。

如果不这样做,只需构建自己的下载网址:

https://www.powershellgallery.com/api/v2/package/$Name/$Version

您甚至可以生成OData代理模块,或者只使用invoke-restmethod进行搜索:

function Find-Module {
    param($Name)
    invoke-restmethod "https://www.powershellgallery.com/api/v2/Packages?`$filter=Id eq '$name' and IsLatestVersion" | 
    select-Object @{n='Name';ex={$_.title.'#text'}},
                  @{n='Version';ex={$_.properties.version}},
                  @{n='Uri';ex={$_.Content.src}}
}
function Save-Module {
    param(
        [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)]
        $Name,
        [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)]$Uri,
        [Parameter(ValueFromPipelineByPropertyName=$true)]$Version="",
        [string]$Path = $pwd
    )
    $Path = (Join-Path $Path "$Name.$Version.nupkg")
    Invoke-WebRequest $Uri -OutFile $Path
    Get-Item $Path
}

所以现在你可以像使用官方模块一样:

Find-Module Pester | Save-Module -Path ~\Downloads

答案 1 :(得分:2)

使用PowerShell 5.0的Internet访问权限更新您的计算机,并使用Save-Module从PowerShellGet保存模块。例如:

Find-Module psreadline | Save-Module -Path c:\users\frode\Desktop

这会将模块(例如PSReadLine)保存到一个文件夹,您可以将其复制到其他计算机并像普通模块一样安装(参见Installing a PowerShell Module