web-dev-qa-db-fra.com

Comment puis-je installer le module SQL Server PowerShell sur une machine hors ligne?

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:

Enter image description here

le module SqlServer demande le fichier package de module Nuget :

Enter image description here

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 ...

Enter image description here

Quelle est la solution de contournement de cette installation de module PowerShell?

7
Marcello Miorelli

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.

7
alroc

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:

Enter image description here

Enter image description here

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:

Enter image description here

Puis le message d'erreur ci-dessous:

enter image description here

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 :

  1. Téléchargez le module sur un système qui a accès à Internet à partir de ici
  2. Cela téléchargera un dossier au format .NUPKG. Renommez le dossier sur l'extension .zip.
  3. Copiez le dossier ZIP sur n'importe quel emplacement sur le serveur cible (dans mon cas c:\sql_install et décompressez-le dans un dossier - renommez le dossier à sqlserver
  4. allez à PowerShell et exécutez le script suivant:

    $env:PSModulePath
    

    Enter image description here

  5. 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 \

  6. Fermer et rouvrir PowerShell Ise (toujours en tant qu'administrateur)

  7. Check in the PowerShell Ise -> Modules - Si sqlserver est là:

    Enter image description here

  8. Si ce n'est pas - alors quelque chose s'est mal passé - sinon vous devriez être capable maintenant de courir

    Import-Module sqlserver
    
  9. Et comme je teste à PowerShell:

    Get-SQLAgent -ServerInstance My_Server_Name

    enter image description here

Si cela fonctionnait bien, vous êtes prêt à partir.

3
Marcello Miorelli