Pour autant que je sache, ils font de même, alors quelle est la raison d'utiliser l'un sur l'autre?
(Désolé, moteur de règles de question SO - je ne sais pas quoi dire d'autre)
3 Réponses :
Get-InstalledModule fait partie de PowerShellGet et répertorie les modules installés à l'aide de l'applet de commande Install-Module , mais Get-Module - ListAvailable affiche les modules de tous les emplacements mentionnés dans l'emplacement $ env: PsModulePath .
Donc, si je sais que mon module est installé avec Install-Module , alors Get-InstalledModule -Name xyz serait le même que Get-Module -ListAvailable -Name xyz ? Le premier sera-t-il plus rapide que le second?
Get-InstalledModule listera les modules installés utilisant Install-Module et qui ne sont pas installés naïvement. Cependant, Get-Module -ListAvailable affiche les modules de tous les emplacements mentionnés dans $ env: emplacement PsModulePath.
Voir ci-dessous Snip pour référence:
*PS C:\Users\xyz> Get-InstalledModule `PS C:\Users\xyz> Get-Module -ListAvailable Directory: C:\Program Files\WindowsPowerShell\Modules
Nom de la version de ModuleType ExportedCommands
---------- ------- ---- ----------------
Script 1.0.1 Microsoft.PowerShell.Operation.V ... {Get-OperationValidation, Invoke-OperationValidation}
Binary 1.0.0.1 PackageManagement {Find-Package, Get-Package, Get-PackageProvider, Get-Pac ...
Script 3.4.0 Pester {Décrire, Contexte, Il, Devrait ...}
Script 1.0.0.1 PowerShellGet {Install-Module, Find-Module, Save-Module, Update-Module ...
Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Set-PSReadLineKeyHandler, Rem ...
Répertoire: C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules
Nom de version de ModuleType ExportedCommands
---------- ------- ---- ----------------
Manifest 1.0.0.0 AppBackgroundTask {Disable-AppBackgroundTaskDiagnosticLog, Enable-AppBackg ... * `
Cependant, si le module n'est pas installé, les deux lèveront la même exception.
PS C: \ Users \ Asim> $ Error.Exception.Message [-1]
Impossible de trouver le type [Microsoft.PowerShell.Commands.PowerShellGet.Telemetry]
.
Veuillez observer:
C:\> (Get-InstalledModule xyz.ps.core).RepositorySourceLocation http://devstatic.xyz.com/prdnuget/nuget C:\> (Get-Module xyz.ps.core -ListAvailable).RepositorySourceLocation.AbsoluteUri http://devstatic.xyz.com/prdnuget/nuget file:///C:/Users/mkharitonov/LocalTestPSRepository
Le module xyz.ps.core a été installé les deux fois en utilisant Install-Module . Seulement une fois qu'il a été installé à partir d'un référentiel local et l'autre fois - à partir d'un référentiel NuGet distant.
Dans les deux cas, le module est installé à l'emplacement du système, c'est-à-dire qu'il est dans PSModulePath code >. Ce qui importe, apparemment, c'est de savoir s'il a été téléchargé depuis un emplacement distant.
J'aimerais que la documentation Microsoft l'explique et fournisse une justification pour cette méthode.