Sdílet prostřednictvím


Moduly vyžadující přijetí licence

PŘEHLED

Právní oddělení některých vydavatelů modulů vyžadují, aby zákazníci před instalací modulu z Galerie prostředí PowerShell explicitně přijali licenci. Pokud uživatel nainstaluje, aktualizuje nebo uloží modul pomocí modulu PowerShellGet, ať už přímo, nebo jako závislost pro jiný balíček, a tento modul vyžaduje, aby uživatel souhlasil s licencí, musí uživatel uvést, že licenci přijímá, jinak se operace nezdaří.

Požadavky na publikování modulů

Moduly, které chtějí po uživatelích vyžadovat přijetí licence, by měly splňovat následující požadavky:

  • Část PSData manifestu modulu by měla obsahovat RequireLicenseAcceptance = $True.
  • Modul by měl obsahovat license.txt soubor v kořenovém adresáři.
  • Manifest modulu by měl obsahovat identifikátor URI licence.
  • Modul by měl být publikován ve formátu PowerShellGet verze 2.0 a vyšší.

Dopad na instalaci/ukládání/Update-Module

  • Rutiny Install/Save/Update podporují nový parametr AcceptLicense , který se chová, jako by uživatel licenci viděl.
  • Pokud je RequiredLicenseAcceptance True a AcceptLicense není zadána, zobrazí se uživateli ikona license.txta zobrazí se výzva s příkazem: Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Pokud je licence přijata
      • Save-Module: modul se zkopíruje do systému uživatele
      • Install-Module: modul se zkopíruje do systému uživatele do správné složky (na základě rozsahu)
      • Update-Module: modul je aktualizován.
    • Pokud je licence zamítnuta.
      • Operace je zrušena.
      • Všechny rutiny kontrolují metadata (requireLicenseAcceptance a Format Version), která říkají, že je vyžadováno přijetí licence
      • Pokud je verze formátu klienta starší než 2.0, operace se nezdaří a vyzve uživatele k aktualizaci klienta.
      • Pokud byl modul publikován ve verzi formátu starší než 2.0, příznak requireLicenseAcceptance se ignoruje.

Závislosti modulů

  • Pokud během operace Instalace/Uložení/Aktualizace vyžaduje závislý modul (něco dalšího závisí na modulu) přijetí licence, je vyžadováno chování při přijetí licence (výše).
  • Pokud je verze modulu již uvedena v lokálním katalogu jako instalovaná v systému, obešli bychom kontrolu licencí.
  • Pokud během operace instalace/ukládání/aktualizace závislý modul vyžaduje licenci a nedojde k přijetí licence, operace se nezdaří a postupuje podle normálních procesů, protože se nepodařilo nainstalovat/uložit/aktualizovat balíček.

Dopad na -Force

Zadání –Force NENÍ dostatečné pro přijetí licence. –AcceptLicense je vyžadováno pro povolení k instalaci. Pokud –Force je zadáno, RequiredLicenseAcceptance je True a –AcceptLicense NOT zadané, operace se nezdaří.

PŘÍKLADY

Příklad 1: Aktualizace manifestu modulu tak, aby vyžadoval přijetí 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

Tento příkaz aktualizuje soubor manifestu a nastaví příznak RequireLicenseAcceptance na hodnotu true.

Příklad 2: Instalační modul vyžadující přijetí 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"):

Tento příkaz zobrazí licenci ze license.txt souboru a vyzve uživatele k přijetí licence.

Příklad 3: Instalační modul vyžadující přijetí licence s -AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Modul se instaluje bez výzvy k přijetí licence.

Příklad 4: Instalační modul vyžadující přijetí licence s -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

Příklad 5: Instalace modulu se závislostmi vyžadujícími přijetí licence

Modul ModuleWithDependency závisí na modulu ModuleRequireLicenseAcceptance. Uživatel je vyzván k přijetí 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"):

Příklad 6: Instalace modulu se závislostmi vyžadujícími přijetí licence a -AcceptLicense

Modul ModuleWithDependency závisí na modulu ModuleRequireLicenseAcceptance. Uživatel není vyzván k přijetí licence, protože je zadána možnost AcceptLicense .

Install-Module -Name ModuleWithDependency -AcceptLicense

Příklad 7: Instalace modulu vyžadujícího přijetí licence na klientovi starším než 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'.

Příklad 8: Uložení modulu vyžadujícího přijetí 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"):

Tento příkaz zobrazí licenci ze license.txt souboru a vyzve uživatele k přijetí licence.

Příklad 9: Uložení modulu vyžadujícího přijetí licence s -AcceptLicense

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

Modul je uložen bez výzvy k přijetí licence.

Příklad 10: Aktualizace modulu vyžadujícího přijetí 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"):

Tento příkaz zobrazí licenci ze license.txt souboru a vyzve uživatele k přijetí licence.

Příklad 11: Aktualizační modul vyžadující přijetí licence s -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Modul je aktualizován bez výzvy k přijetí licence.

Další podrobnosti

Vyžadovat přijetí licence pro skripty

Vyžadování podpory přijetí licence v nástroji PowerShellGallery

Vyžadovat přijetí licence při nasazení do Azure Automation