我有一个简单的问题,但我找不到任何答案。
我正在使用PowerShell 5而且我在封闭的环境中工作,无法连接到互联网,我想在我的机器上手动安装模块,基本上任何可供下载的模块,例如posh-ssh。
可以吗?让我们说在这里保存模块并安装?
答案 0 :(得分:3)
在这种情况下,让我给你两种方法。
希望它有所帮助。
答案 1 :(得分:3)
@jyao要求提供一些示例,这是我的示例示例:
在封闭的网络(或脱机计算机)中安装/使PowerShell模块可用的最简单方法是使用在线计算机先下载所需的模块,然后将这些模块保存/复制到一个位置可从封闭的网络中访问。
STEPS:
注意:在下面的示例中,我正在使用“ SQLServer ”模块:
将所需的模块保存在本地文件夹中,例如:
Save-Module -Name "SQLServer" -Path C:\SavedPSModules
现在,将模块复制到脱机计算机(在其中PowerShell用来查找模块的“模块”文件夹之一中),例如:
Copy-Item "C:\SavedPSModules\SQLServer" -Destination "C:\User\{usr_name}\Documents\WindowsPowerShell\Modules" -Recurse -ToSession $Session;
#假定目标计算机在可访问的域/网络中。
最后检查模块是否正确安装:
$module = "SQLServer" #Check if module is installed: $error.clear() Import-Module $module -ErrorAction SilentlyContinue If($error){ Write-Host $module 'module is NOT installed (install it first before importing.)' }else{ Write-Host "$module module is installed " -NoNewline #Check if module is imported: if (Get-Module -Name $module) { Write-Host "and is already imported (i.e. its cmdlets are ready/available to be used.)" Write-Host "`n$module module is installed in the following folder: `n`t $((Get-Module -Name SqlServer).ModuleBase[0])" } else { Write-Warning "however, it is NOT imported yet (use `"Import-Module`" to import it)." } }
注释:
$ env:PSModulePath 变量用于保存PowerShell查找已安装模块的位置,如果要将模块保留在共享的网络文件夹中,只需将其位置附加到此变量即可。要列出当前设置的模块文件夹,请使用以下命令:
$env:PSModulePath -split ';'
如果“模块”文件夹不存在,则可能需要创建它,例如:
Mkdir C:\Users\{user_name}\Documents\WindowsPowerShell\Modules;
记住: Find-Module cmdlet(及其同级cmdlet,例如 Save-Module 和 Install-Module )仅在服务器中启用了下载功能(例如,您的计算机已连接到Internet且防火墙未阻止下载的情况下)。
HTH