Partager via


Modules exigeant l’acceptation de la licence

SYNOPSIS

Les services juridiques de certains éditeurs de modules exigent que les clients acceptent explicitement la licence avant d’installer leur module à partir de PowerShell Gallery. Si un utilisateur installe, met à jour ou enregistre un module avec PowerShellGet, directement ou dans une relation de dépendance avec un autre package, et que ce module exige que l’utilisateur accepte une licence, l’utilisateur doit indiquer qu’il accepte la licence, faute de quoi l’opération échoue.

Publier la configuration requise pour les modules

Les modules demandant aux utilisateurs d’accepter une licence doivent répondre aux conditions suivantes :

  • La section PSData du manifeste de module doit inclure RequireLicenseAcceptance = $True.
  • Le module doit contenir le fichier license.txt dans le répertoire racine.
  • Le manifeste de module doit contenir l’Uri de la licence.
  • Le module doit être publié avec PowerShellGet Format, version 2.0 et versions ultérieures.

Impact sur Install/Save/Update-Module

  • Les applets de commande Install/Save/Update prennent en charge un nouveau paramètre AcceptLicense qui se comporte comme si l’utilisateur avait vu la licence.
  • Si RequiredLicenseAcceptance est défini sur True et qu’AcceptLicense n’est pas spécifié, l’utilisateur voit le fichier license.txt et est invité à répondre à la question suivante : Do you accept these license terms (Yes/No/YesToAll/NoToAll)
    • Si la licence est acceptée
      • Save-Module : le module est copié sur le système de l’utilisateur
      • Install-Module : le module est copié dans le bon dossier du système de l’utilisateur (basé sur l’étendue)
      • Update-Module : le module est mis à jour.
    • Si la licence a été refusée.
      • L'opération est annulée.
      • Toutes les applets de commande vérifient les métadonnées (requireLicenseAcceptance et version du format) qui indiquent que l’acceptation de la licence est nécessaire
      • Si la version de format est antérieure à 2.0, l’opération échoue et l’utilisateur est invité à mettre à jour le client.
      • Si le module a été publié avec une version de format antérieure à 2.0, l’indicateur requireLicenseAcceptance est ignoré.

Dépendances du module

  • Pendant l’opération d’installation/d’enregistrement/de mise à jour, si un module dépendant (quelque chose d’autre dépend du module) nécessite une acceptation de licence, le comportement d’acceptation de licence (ci-dessus) est requis.
  • Si la version du module est déjà répertoriée dans le catalogue local comme étant installée sur le système, nous contournerons la vérification de la licence.
  • Si, au cours de l’opération d’installation/d’enregistrement/de mise à jour, un module dépendant exige une licence et que cette licence n’est pas acceptée, l’opération échoue et suit les processus normaux d’échec de l’installation/l’enregistrement/la mise à jour du package.

Impact sur Force

La spécification de –Force n’est PAS suffisante pour accepter une licence. –AcceptLicense est obligatoire pour autoriser l’installation. Si –Force est spécifié, que RequiredLicenseAcceptance a la valeur True et que –AcceptLicense n’est PAS spécifié, l’opération échoue.

EXEMPLES

Exemple 1 : mise à jour du manifeste de module pour exiger l’acceptation de la licence

Update-ModuleManifest -Path C:\modulemanifest.psd1 -RequireLicenseAcceptance -PrivateData @{
    PSData = @{
        # Flag to indicate whether the module requires explicit user acceptance
        RequireLicenseAcceptance = $true
    } # End of PSData hashtable

 } # End of PrivateData hashtable

Cette commande met à jour le fichier de manifeste et définit l’indicateur RequireLicenseAcceptance sur true.

Exemple 2 : installation d’un module nécessitant l’acceptation de la licence

Install-Module -Name ModuleRequireLicenseAcceptance
License Acceptance

License 2.0
Copyright (c) 2016 PowerShell Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.

Do you accept the license terms for module 'ModuleRequireLicenseAcceptance'.
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

Cette commande affiche la licence du fichier license.txt et invite l’utilisateur à l’accepter.

Exemple 3 : installation d’un module nécessitant l’acceptation de la licence avec AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Le module est installé sans invitation à accepter la licence.

Exemple 4 : installation d’un module nécessitant l’acceptation de la licence avec -Force

Install-Module -Name ModuleRequireLicenseAcceptance -Force
PackageManagement\Install-Package : License Acceptance is required for module 'ModuleRequireLicenseAcceptance'. Please specify '-AcceptLicense' to perform this operation.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.1.3.3\PSModule.psm1:1837 char:21
+ ...          $null = PackageManagement\Install-Package @PSBoundParameters
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], E
   xception
    + FullyQualifiedErrorId : ForceAcceptLicense,Install-PackageUtility,Microsoft.PowerShell.PackageManagement.Cmdlets
   .InstallPackage

Exemple 5 : installation d’un module avec des dépendances nécessitant l’acceptation de la licence

Le module ModuleWithDependency dépend du module ModuleRequireLicenseAcceptance. L’utilisateur est invité à accepter la licence.

Install-Module -Name ModuleWithDependency
License Acceptance
MIT License 2.0
Copyright (c) 2016 PowerShell Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.

Do you accept the license terms for module 'ModuleRequireLicenseAcceptance'.
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

Exemple 6 : installation d’un module avec des dépendances nécessitant l’acceptation de la licence et AcceptLicense

Le module ModuleWithDependency dépend du module ModuleRequireLicenseAcceptance. L’utilisateur n’est pas invité à accepter la licence, puisqu’AcceptLicense est spécifié.

Install-Module -Name ModuleWithDependency -AcceptLicense

Exemple 7 : installation d’un module nécessitant l’acceptation de la licence sur un client antérieure à PSGetFormatVersion 2.0

Install-Module -Name ModuleRequireLicenseAcceptance
WARNING: The specified module 'ModuleRequireLicenseAcceptance' with PowerShellGetFormatVersion
'2.0' is not supported by the current version of PowerShellGet. Get the latest version of the
PowerShellGet module to install this module, 'ModuleRequireLicenseAcceptance'.

Exemple 8 : enregistrement d’un module nécessitant l’acceptation de la licence

Save-Module -Name ModuleRequireLicenseAcceptance -Path C:\Saved
License Acceptance

License 2.0
Copyright (c) 2016 PowerShell Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.

Do you accept the license terms for module 'ModuleRequireLicenseAcceptance'.
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

Cette commande affiche la licence du fichier license.txt et invite l’utilisateur à l’accepter.

Exemple 9 : enregistrement d’un module nécessitant l’acceptation de la licence avec AcceptLicense

Save-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense -Path C:\Saved

Le module est enregistré sans invitation à accepter la licence.

Exemple 10 : mise à jour d’un module nécessitant l’acceptation de la licence

Update-Module -Name ModuleRequireLicenseAcceptance
License Acceptance

License 2.0
Copyright (c) 2016 PowerShell Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.

Do you accept the license terms for module 'ModuleRequireLicenseAcceptance'.
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

Cette commande affiche la licence du fichier license.txt et invite l’utilisateur à l’accepter.

Exemple 11 : mise à jour d’un module nécessitant l’acceptation de la licence avec AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Le module est mis à jour sans invitation à accepter la licence.

Détails supplémentaires

Exiger l’acceptation de la licence pour les scripts

Exiger la prise en charge de l’acceptation de licence sur PowerShellGallery

Exiger l’acceptation de la licence lors du déploiement sur Azure Automation