我处在一个棘手的情况下,我需要在PC上安装MSOnline PowerShell模块,并且它需要先安装NuGet。不幸的是,公司防火墙不信任NuGet网站,因此PowerShell cmdlet在安装时失败。
我想知道是否可以将包含MSOnline模块的目录从一台PC复制到目标PC。这是可行的解决方法吗?还是有其他解决方法?
我了解理想情况下,我应该尝试将网站列入白名单,但是这里存在时间问题。
答案 0 :(得分:0)
正如@TheMadTechnician的评论中所说明的那样,您可以从$env:PSMdulePath
复制您所请求的目标计算机中的模块。
如果您有多台用于模块分发的机器,则可以按照here所述通过网络共享设置您自己的私有Powershell画廊(如果在您的公司中可以这样做)。基于此,多台计算机可以使用Get-PSRepository
,Find-Module -Repository MyRepository
,Install-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
中列出的文件夹之一中,或者当您要加载模块时,可以通过以下方式明确地进行操作:定义模块的路径。