在封闭网络中安装powershell模块
我有一个简单的问题,但却找不到答案 我使用的是powershell 5,我在封闭环境中工作,无法连接到internet,我想在我的机器上手动安装模块,基本上是可以下载的任何模块,例如posh ssh在封闭网络中安装powershell模块,powershell,Powershell,我有一个简单的问题,但却找不到答案 我使用的是powershell 5,我在封闭环境中工作,无法连接到internet,我想在我的机器上手动安装模块,基本上是可以下载的任何模块,例如posh ssh 能做到吗?假设将模块保存在此处并安装?在这种情况下,让我给出两种方法 您可以从图库中下载所需的所有模块 并将其保存在某个系统的共享框中。那就 从该共享文件夹安装模块。因此,它将充当一个 为您提供单独的存储库 您可以创建一个内部FTP,并将其保存在那里。然后 使用powershell,您可以轻松下载所
能做到吗?假设将模块保存在此处并安装?在这种情况下,让我给出两种方法
希望能有所帮助。当@jyao询问一些示例时,以下是我的示例/示例代码回答: 要在封闭网络(或脱机计算机)中安装/提供PowerShell模块,最简单的方法是首先使用联机计算机下载所需的模块,然后将这些模块保存/复制到封闭网络中可访问的位置 步骤: 注意:我在以下示例中使用“SQLServer”模块:
- 登录到联机计算机(并且在该计算机中下载未被防火墙阻止。)
- 保存所需模块(在本地文件夹中),例如:
Save模块-名称为“SQLServer”-路径C:\SavedPSModules
- 现在,将模块复制到脱机计算机中(在PowerShell查找模块的其中一个模块文件夹中),例如:
复制项目“C:\SavedPSModules\SQLServer”-目标“C:\User\{usr\u name}\Documents\WindowsPowerShell\Modules”-递归-到会话$session代码>#假设目标计算机位于可访问域/网络内,您需要为其创建会话(此处存储在$Session变量中)
- 最后安装+导入模块:
注意事项:
- $env:PSModulePath变量保存PowerShell查找已安装模块的位置,如果要将模块保存在共享网络文件夹中,只需将其位置附加到此变量。要列出当前设置的模块文件夹,请使用以下命令:
$env:PSModulePath-split';'代码>
- 如果“模块”文件夹不存在,您可能需要创建它,例如:
Mkdir C:\Users\{user\u name}\Documents\WindowsPowerShell\Modules代码>
- 请记住:查找模块cmdlet(及其同级cmdlet,如Save Module&Install Module)仅在您的服务器中启用下载(即,您的计算机连接到internet且下载未被防火墙阻止)的情况下才能工作
HTH它的字面意思是保存模块
。如果您能给出一个示例,那就更好了,因为目前我们使用install module来安装PS模块,因此如果您在共享文件夹中有一个模块,我如何使用install module来访问该共享文件夹?您需要在install module
命令中给出.psm1
(模块)文件的完整路径。此外,您可以使用Save Module
在本地保存模块。参考链接。。。
#Check if module is installed & imported, do it if not:
$module = "SQLServer"
if((Get-Module -Name $module) -eq $null) {
#Check if module is installed:
if (Get-Module -ListAvailable -Name $module) {
Write-Output "$module module is already installed";
#Check if module is imported:
if((Get-Module -Name $module) -ne $null) {
Write-Output " and is already imported (i.e. its cmdlets are ready/available to be used.)";
Write-Output "Installation Path: `n`t" (Get-Module -Name $module).Path;
} else {
Write-Output ", however, it is NOT imported yet - importing it now";
Import-Module $module;
}
}else{
Write-Output "$module module is NOT installed - installing it now"
try {
Install-Module -Name $module -AllowClobber -Confirm:$False -Force #suppressed prompt.
}
catch [Exception] {
$_.message
exit
}
Write-Output "$module installed successfully - importing it now";
Import-Module $module;
}
}