将MSOnline PowerShell模块复制为一种解决方法

时间:2019-05-10 20:30:48

标签: powershell module installation

我处在一个棘手的情况下,我需要在PC上安装MSOnline PowerShell模块,并且它需要先安装NuGet。不幸的是,公司防火墙不信任NuGet网站,因此PowerShell cmdlet在安装时失败。

我想知道是否可以将包含MSOnline模块的目录从一台PC复制到目标PC。这是可行的解决方法吗?还是有其他解决方法?

我了解理想情况下,我应该尝试将网站列入白名单,但是这里存在时间问题。

2 个答案:

答案 0 :(得分:0)

正如@TheMadTechnician的评论中所说明的那样,您可以从$env:PSMdulePath复制您所请求的目标计算机中的模块。

如果您有多台用于模块分发的机器,则可以按照here所述通过网络共享设置您自己的私有Powershell画廊(如果在您的公司中可以这样做)。基于此,多台计算机可以使用Get-PSRepositoryFind-Module -Repository MyRepositoryInstall-Module -Name MyModule -Repository MyRepository,.. cmdlet进行模块管理。我正在使用这个私有的Powershell画廊来分发有关多个开发机器的一些Git工具。您还可以在使用NuGet的后台在此库中发布自己的Powershell模块。因此,有权访问NuGet的计算机可以通过Save-Module(可能通过后台作业)存储最新模块,然后将其重新发布到您的私人画廊中。

您还应该检查MSOnline模块是否还需要复制任何RequiredPackages。您可以通过(我以PowerShellGet为例)进行此操作:

 PS C:\> (Get-Module -ListAvailable | ? Name -eq PowerShellGet ).RequiredModules

 ModuleType Version    Name                                ExportedCommands
 ---------- -------    ----                                ----------------
 Script     1.0.0.1    PackageManagement

也许有帮助。

答案 1 :(得分:0)

在具有访问权限的计算机上,您可以使用Save-Module cmdlet将模块保存到路径,然后将该文件夹复制到有问题的计算机中。然后,您可以将文件夹放置在$env:PSModulePath中,或使用文件夹的完整路径显式加载该文件夹。

在有权访问PowerShell库的计算机上,您可以运行:

Find-Module MSOnline|Save-Module -Path $home\Downloads

然后将MSOnline文件夹从该计算机上的下载文件夹复制到目标计算机,并将其放置在$env:PSModulePath中列出的文件夹之一中,或者当您要加载模块时,可以通过以下方式明确地进行操作:定义模块的路径。