如何在离线机器上安装 SQL Server PowerShell 模块?

Mar*_*lli 9 sql-server powershell installation automation patching

我有一些 SQL Server 机器无法连接到任何外部站点。

我在管理数据库时越来越多地使用 PowerShell,所以我肯定需要安装这个模块,以便我可以使用我的 PowerShell 例程。

事实证明,在这些离线机器上安装 SQL Server 模块很困难。

当我尝试安装模块时:

在此处输入图片说明

SqlServer模块要求提供NuGet 模块包

在此处输入图片说明

然后我得到了这片红色字母的海洋和以下错误消息,如下图所示:

警告:无法从 URI“ https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409 ”下载到“”。

警告:无法下载可用提供程序的列表。检查您的互联网连接。PackageManagement\Get-PackageProvider:无法找到包提供程序“NuGet”。

它可能尚未导入。尝试“Get-PackageProvider -ListAvailable”。

在 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30 + ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...

在此处输入图片说明

此 PowerShell 模块安装的解决方法是什么?

alr*_*roc 10

PowerShell 有一个内置的机制,这应该比以前的答案更容易。

在连接 Internet 的计算机上,运行Save-Module sqlserver -path c:\tmp(替换您想要保存模块的任何路径)。这会将模块保存到c:\tmp( c:\tmp\SqlServer)中的同名目录中。

然后,将整个目录复制到您的目标计算机。您有几个目的地选项,具体取决于您希望如何将其提供给用户。在 PowerShell 5.1 及更早版本上,查看PSModulePath环境变量中的路径。在我的系统上,我有:

> $env:psmodulepath.split(";")
C:\Users\MYNAME\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files\Intel\Wired Networking\
C:\Program Files (x86)\Microsoft SQL Server\150\Tools\PowerShell\Modules\
Run Code Online (Sandbox Code Playgroud)

为了让所有用户都可以使用该模块,我将它放在C:\Program Files\WindowsPowerShell\Modules. 对于我自己,它会进入C:\Users\MYNAME\Documents\WindowsPowerShell\Modules

如果您运行的是PowerShell Core或 PowerShell 7,这些路径可能会有所不同;您会查看$PSGetPath.

从这里,您应该能够Import-Module sqlserver成功运行。

无耻的插件:如果您通过 PowerShell 进行大量 SQL Server 管理(我衷心鼓励它!),您应该查看该dbatools模块。