当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在离线模式下安装 PowerShell 模块(无需访问 Internet)

作者:精品下载站 日期:2024-12-14 23:16:13 浏览:15 分类:玩电脑

在离线模式下安装 PowerShell 模块(无需访问 Internet)


最流行的 PowerShell 模块是从官方 PowerShell 库在线安装的(

PSGallery

)使用 Install-Module 命令存储库。但是,如果您的计算机位于隔离网络中或者对 PSRepository 的直接访问受到限制,您将无法安装 PowerShell 模块。当您尝试在 Windows Server 主机上安装 PowerShell 模块时,情况也是如此,这些主机通常会阻止直接 Internet 访问。在本文中,我们将展示如何离线安装 PowerShell 模块以及如何从远程计算机导入模块(例如,当使用 SQLServer 管理 PoSh 模块时)。

请注意,没有从 PowershellGallery.com 下载模块的直接链接。您可以从该站点下载的唯一内容是 NuGet 包(.nupkg 文件)。您可以从 NUPKG 文件安装 PowerShell 模块,但这不是完整的模块安装(主要问题是依赖项未解决)。

[玩转系统] 在离线模式下安装 PowerShell 模块(无需访问 Internet)

如何在离线计算机上安装PowerShell模块?

首先,在可以访问互联网的计算机上安装所需的PowerShell模块。

计算机上必须安装 PowerShell 版本 5.1 或更高版本:

$PSVersionTable.PSVersion

确保该模块存在于 PSGallery 中:

Find-Module -Name *SqlServer*| Select Name, Version, Repository

[玩转系统] 在离线模式下安装 PowerShell 模块(无需访问 Internet)

将模块下载到计算机上指定的本地文件夹:

Save-Module -Name SqlServer -Path C:\PS\

[玩转系统] 在离线模式下安装 PowerShell 模块(无需访问 Internet)

将文件夹复制到要安装该模块的另一台计算机。

让我们看看 PowerShell 模块存储在哪些文件夹中:

$env:PSModulePath -split ";"

[玩转系统] 在离线模式下安装 PowerShell 模块(无需访问 Internet)

如您所见,PowerShell 模块位于以下路径之一:

  • C:\Users\username\Documents\WindowsPowerShell\Modules

    $Home\Documents\PowerShell\Modules

    ) - 此文件夹中的 PowerShell 模块仅对该用户 (CurrentUser) 可用;

  • C:\Program Files\WindowsPowerShell\Modules

    $Env:ProgramFiles\WindowsPowerShell\Modules

    ) — 该路径用于为所有计算机用户安装模块(

    -Scope AllUsers

    );

  • C:\Windows\system32\WindowsPowerShell\v1.0\Modules

    - 内置模块的默认文件夹。

将模块复制到C:\Program Files\WindowsPowerShell\Modules

[玩转系统] 在离线模式下安装 PowerShell 模块(无需访问 Internet)

确保 SQLServer 模块现在可用:

Get-Module -Name SQLServer -ListAvailable

[玩转系统] 在离线模式下安装 PowerShell 模块(无需访问 Internet)

您可以获取模块目录,如下所示:

(Get-Module -ListAvailable SQLServer).path

[玩转系统] 在离线模式下安装 PowerShell 模块(无需访问 Internet)

显示模块中可用命令的列表:

Get-Command -Module SQLServer

以同样的方式,您可以安装任何模块。我经常使用这种方法来安装 SQLServer、PSWindowsUpdate 或 PowerCLI for VMWare 模块。

出于显而易见的原因,在离线设备上安装 AzureAD 和 Exchange Online PowerShell 模块没有任何意义。

从远程计算机导入 PowerShell 模块

如果您不想在所有计算机上安装 PowerShell 模块,可以使用 PSRemoting 从远程计算机导入任何模块:

$session = New-PSSession -ComputerName dub-sql1

要显示远程计算机上安装的模块列表:

Get-Module -PSSession $session -ListAvailable

要将指定的 PowerShell 模块导入到您的计算机:

Import-Module -PSsession $session -Name SqlServer

完成后不要忘记关闭会话:

Remove-PSSession $session

另一种有趣的方式是通过隐式远程处理在本地使用安装在远程计算机上的 PowerShell 模块。

使用 Invoke-Command 连接到远程计算机并导入所需的 PowerShell 模块:

$session = New-PSSession -ComputerName dub-sql1
Invoke-Command {Import-Module SqlServer} -Session $session

将模块 cmdlet 从远程会话导出到本地模块:

Export-PSSession -Session $s -CommandName *-Sql* -OutputModule RemoteSQLServer -AllowClobber

该命令在您的计算机上创建一个新的 RemoteSQLServer PowerShell 模块(位于 C:\Program Files\WindowsPowerShell\Modules 中)。 cmdlet 文件本身不会被复制。

关闭会话:

Remove-PSSession $session

然后,要从此模块使用 PowerShell cmdlet,您只需将它们导入到会话中即可:

Import-Module RemoteSQLServer

所有 SQL 模块 cmdlet 都可用,无需与远程计算机建立显式连接。尝试使用 Invoke-Sqlcmd 查询 MS SQL 数据库。在关闭 PowerShell 控制台或删除模块之前,所有 MSSQL 命令都可用。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯