Les modules PowerShell les plus populaires sont installés en ligne à partir de la galerie officielle PowerShell (PSGallery) repository using the Installer le module commande. Cependant, vous ne pourrez pas installer un module PowerShell si votre ordinateur est dans un réseau isolé ou si l'accès direct au poste PSR est restreint.
Il en va de même lorsque vous essayez d'installer le module PowerShell sur les hôtes de Windows Server, qui ont généralement un accès Internet direct bloqué. Dans cet article, nous montrerons comment installer les modules PowerShell hors ligne et importer un module à partir d'un ordinateur distant (par exemple, lors de l'utilisation du module PoSh de gestion SQLServer).
Les modules PowerShell les plus populaires sont installés en ligne à partir de la galerie officielle PowerShell (PSGallery) repository using the Installer le module commande. Cependant, vous ne pourrez pas installer un module PowerShell si votre ordinateur est dans un réseau isolé ou si l'accès direct au poste PSR est restreint. Il en va de même lorsque vous essayez d'installer le module PowerShell sur les hôtes de Windows Server, qui ont généralement un accès Internet direct bloqué. Dans cet article, nous montrerons comment installer les modules PowerShell hors ligne et importer un module à partir d'un ordinateur distant (par exemple, lors de l'utilisation du module PoSh de gestion SQLServer).
Notez qu'il n'y a pas de liens directs pour télécharger des modules sur PowershellGallery.com. La seule chose que vous pouvez télécharger à partir du site est le package NuGet (fichier .nupkg). Vous pouvez installer un module PowerShell à partir du fichier NUPKG, mais ce ne sera pas une installation complète du module (le problème principal est que les dépendances ne sont pas résolues).

Tout d'abord, installez le module PowerShell dont vous avez besoin sur un ordinateur avec accès Internet.
Version PowerShell 5.1 ou plus récent doit être installé sur l'ordinateur :
$PSVersionTable.PSVersion
Assurez-vous que le module existe dans PSGallery :
Find-Module –Name *SqlServer*| Select Name, Version, Repository

Téléchargez le module dans le dossier local spécifié sur votre ordinateur :
Save-Module –Name SqlServer –Path C:\PS\

Copiez le dossier sur un autre ordinateur sur lequel vous souhaitez installer le module.
Voyons dans quels dossiers les modules PowerShell sont stockés:
$env:PSModulePath -split ";"

Comme vous pouvez le voir, les modules PowerShell sont situés sur l'un des chemins suivants:
C:\Users\username\Documents\WindowsPowerShell\Modules ($Home\Documents\PowerShell\Modules) – PowerShell modules in this folder are available only to this user (CurrentUser);C:\Program Files\WindowsPowerShell\Modules ($Env:ProgramFiles\WindowsPowerShell\Modules) — the path is used to install a module for all computer users (-Scope AllUsers);Copiez le module sur C: \ Program Files \ WindowsPowerShell \ Modules.

Assurez-vous que le module SQLServer est maintenant disponible :
Get-Module -Name SQLServer -ListAvailable

Vous pouvez obtenir le répertoire du module comme indiqué ci-dessous:
(Get-Module -ListAvailable SQLServer).path

Affichez la liste des commandes disponibles dans le module :
Get-Command -Module SQLServer
De la même manière, vous pouvez installer n'importe quel module. J'utilise souvent cette méthode pour installer SQLServer PSWindowsUpdate, ou PowerCLI pour VMWare modules.
Pour des raisons évidentes, il n'est pas logique d'installer les modules PowerShell AzureAD et Exchange Online sur les appareils hors ligne.
Si vous ne souhaitez pas installer de module PowerShell sur tous les ordinateurs, vous pouvez importer n'importe quel module à partir d'un ordinateur distant à l'aide de PSRemoting :
$session = New-PSSession -ComputerName dub-sql1
Pour afficher une liste de modules installés sur un ordinateur distant :
Get-Module -PSSession $session –ListAvailable
Pour importer le module PowerShell spécifié sur votre ordinateur:
Import-Module -PSsession $session -Name SqlServer
N'oubliez pas de fermer la session lorsque vous avez terminé :
Remove-PSSession $session
Une autre façon intéressante d'utiliser localement un module PowerShell installé sur un ordinateur distant via Remote implicite.
Connectez-vous à un ordinateur distant à l'aide la commande d'invocation et importez le module PowerShell que vous souhaitez :
$session = New-PSSession -ComputerName dub-sql1
Invoke-Command {Import-Module SqlServer} -Session $ session
Exportez les cmdlets du module de la session distante vers le module local :
Export-PSSession -Session $s -CommandName *-Sql* -OutputModule RemoteSQLServer -AllowClobber
La commande crée un nouveau module PowerShell RemoteSQLServer sur votre ordinateur (dans C: \ Program Files \ WindowsPowerShell \ Modules). Les fichiers cmdlet eux-mêmes ne sont pas copiés.
Fermez la session:
Remove-PSSession $session
Ensuite, pour utiliser les cmdlets PowerShell de ce module, il vous suffit de les importer dans la session :
Import-Module RemoteSQLServer
Tous les cmdlets du module SQL seront disponibles sans établir de connexion explicite à l'ordinateur distant. Essayer de requête de la base de données MS SQL à l'aide d'Invoke-Sqlcmd. Toutes les commandes MSSQL sont disponibles jusqu'à ce que vous fermiez votre console PowerShell ou supprimiez le module.