J'ai des machines SQL Server qui ne peuvent se connecter à aucun site externe.
J'ai utilisé PowerShell de plus en plus en gérant des bases de données, j'ai donc besoin de ce module à installer afin que je puisse utiliser mes routines PowerShell.
Il a été prouvé difficile d'installer le module SQL Server sur ces machines hors ligne.
Quand j'essaie d'installer le module:
le module SqlServer
demande le fichier package de module Nuget :
Je reçois ensuite cet océan des lettres rouges et le message d'erreur suivant que vous pouvez voir sur l'image ci-dessous:
AVERTISSEMENT: Impossible de télécharger de Uri ' https://go.microsoft.com/fwlink/?LinkID=627338&clCID=0X409 ' à ''.
AVERTISSEMENT: Impossible de télécharger la liste des fournisseurs disponibles. Vérifiez votre connection internet. Packagemanagement\Get-PackackProvider: Impossible de trouver le fournisseur de package 'Nuget'.
Il ne peut pas encore être importé. Essayez 'get-packageProvider -listAvailable'.
À C:\Program Files\WindowsPowershell\Modules\PowerShellget\1.0.0.1\PSMODULE.PSM1: 7415 Char: 30 + ... TProvider = Packagemanagement\Get-PackackProvider -Name $ Script: Nuget ...
Quelle est la solution de contournement de cette installation de module PowerShell?
PowerShell a un mécanisme intégré pour cela qui devrait être plus facile que la réponse précédente .
D'un ordinateur connecté à Internet, courez Save-Module sqlserver -path c:\tmp
(remplaçant le chemin que vous souhaitez que le module soit enregistré pour que le module soit enregistré). Cela permettra d'enregistrer le module à un répertoire du même nom en c:\tmp
(c:\tmp\SqlServer
).
Ensuite, copiez tout le répertoire entier sur votre ou vos ordinateurs cible. Vous avez quelques options pour la destination, en fonction de la façon dont vous souhaitez la rendre disponible pour les utilisateurs. Sur PowerShell 5.1 et plus ancien regard sur les chemins de la variable d'environnement PSModulePath
. Sur mon système, j'ai:
> $env:psmodulepath.split(";")
C:\Users\MYNAME\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files\Intel\Wired Networking\
C:\Program Files (x86)\Microsoft SQL Server\150\Tools\PowerShell\Modules\
Pour rendre le module à la disposition de tous les utilisateurs, je le mettais dans C:\Program Files\WindowsPowerShell\Modules
. Pour juste moi-même, ça va entrer dans C:\Users\MYNAME\Documents\WindowsPowerShell\Modules
Ces chemins peuvent être un peu différents si vous exécutez PowerShell Core ou PowerShell 7; Vous regarderiez un ou plusieurs des chemins de $PSGetPath
.
D'ici, vous devriez être capable de courir Import-Module sqlserver
avec succès.
Bouchon sans vergogne: Si vous faites beaucoup d'administration SQL Server via PowerShell (et j'encourageons le bonheur!), Vous devez vérifier le mode dbatools
Module.
C'est comme ça que je l'ai fait. J'ai reçu les informations de plusieurs articles en ligne, comme - this , et this .
Je suis très reconnaissant pour les personnes qui ont fait ces articles disponibles.
Donc, cherchez un autre ordinateur (qui dispose d'un accès Internet) assurez-vous que le package Nuget est installé et explorez ce dossier. Nous pouvons voir:
Donc, si nous copions cela DLL fichier sur la machine sans accès à Internet et stockez-le dans la même structure de dossier, assurez-vous de vous fermer et de vous rouvrir PowerShell Ise programme.
Si maintenant vous essayez le install-module -name sqlserver
Encore une fois, vous recevrez toujours un message sur un référentiel nécessaire:
Puis le message d'erreur ci-dessous:
Donc, vous feriez mieux télécharger manuellement le package de module SqlServer
actuellement à partir de ici .
Pour télécharger manuellement, cliquez sur Télécharger le fichier NUPKG RAW. Une copie du package est copiée dans le dossier de téléchargement de votre navigateur avec le nom ..nupkg.
Il y a quelques instructions ici :
c:\sql_install
et décompressez-le dans un dossier - renommez le dossier à sqlserver
allez à PowerShell et exécutez le script suivant:
$env:PSModulePath
du résultat ci-dessus, vous pouvez voir mon chemin et basé sur cela, j'ai copié le dossier sqlserver
- de 2
aux emplacements suivants:
C:\Fichiers de programme\Modules WindowsPowershell\Modules;
C:\windows\system32\windowspowershell\v1.0\modules;
C:\Fichiers du programme> (x86)\Microsoft SQL Server\130\Tools\PowerShell\modules \
Fermer et rouvrir PowerShell Ise (toujours en tant qu'administrateur)
Check in the PowerShell Ise -> Modules - Si sqlserver
est là:
Si ce n'est pas - alors quelque chose s'est mal passé - sinon vous devriez être capable maintenant de courir
Import-Module sqlserver
Et comme je teste à PowerShell:
Get-SQLAgent -ServerInstance My_Server_Name
Si cela fonctionnait bien, vous êtes prêt à partir.