Qu'est-ce que la commande Install-Module dans Powershell?

8

Divers articles de Microsoft font référence à la commande Install-Module de Powershell , mais je ne trouve aucune référence à ce que c'est réellement et ce n'est pas très accessible à googler. J'ai installé psget , j'ai donc sa version du module d'installation ... mais je pense que ce n'est pas le module d'installation dont tout le monde parle.

Ah, j'ai trouvé ce module d'installation . Est-ce différent de celui installé par PsGet? Si oui, dois-je désinstaller PsGet pour revenir à celui par défaut?

Rory
la source
"Est-ce différent?" - Non; Dans l'exemple Install-Moduleest utilisé pour installer le Azure Resource Manager. Install-Modulelui-même fait partie de PowerShell 3.0 et Azure Resource Managerfait partie de PowerShell 5
Ramhound
Merci @Ramhound - J'ai installé psget qui ajoute une commande Install-Module, donc je suppose que c'est écrasé le Install-Module fourni avec PS.
Rory
Je suppose que ce n'est pas garanti, mais si le module lui-même est ajouté, c'est une valeur sûre.
Ramhound

Réponses:

18

J'avais précédemment installé PSGet qui avait écrasé ma version de Install-Module. Vous pouvez le vérifier en exécutant help install-moduleet voir à quelle version il se réfère.

Je n'ai pas pu trouver la documentation de désinstallation de PSGet, je l'ai donc supprimée en supprimant le dossier C:\Users\Rory\Documents\WindowsPowerShell\Modules\PSGet. Désigne maintenant help install-modulela version Microsoft.

Rory
la source
1
C'est la bonne façon de désinstaller n'importe quel module s'il n'a pas de références. PsGet par défaut n'en a pas, donc ça devrait aller juste pour le supprimer.
Mike Chaliy
1
Vous devrez probablement redémarrer votre fenêtre de commande Powershell pour que cela prenne effet.
David White
1
Sur mon ordinateur, psget a été installé sous C: \ Program Files \ WindowsPowerShell \ Modules
dinnouti
9

Vous pouvez contourner le conflit en préfixant la commande avec le nom du module :

PsGet installé et gênant:

C:\repos> install-module csproj
Module csproj was not found in central repository
At C:\Users\Administrator\Documents\WindowsPowerShell\Modules\PsGet\PsGet.psm1:694 char:13
+             throw "Module $Module was not found in central repository ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Module csproj w...tral repository:String) [], RuntimeException
    + FullyQualifiedErrorId : Module csproj was not found in central repository

en utilisant le nom qualifié:

C:\repos> powershellget\install-module csproj

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running
the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y
C:\repos>

Merci à http://windowsitpro.com/blog/dealing-cmdlet-name-conflicts

Nom du module obtenu en lisant l'URL de la documentation - https://msdn.microsoft.com/powershell/reference/5.1/PowerShellGet/install-module

Plus d'informations: https://andrwwatt.wordpress.com/2006/05/13/coping-with-a-powershell-naming-clash/

Tim Abell
la source