Udostępnij za pomocą


Moduły wymagające akceptacji licencji

STRESZCZENIE

Działy prawne niektórych wydawców modułów wymagają, aby klienci musieli jawnie zaakceptować licencję przed zainstalowaniem modułu z Galeria programu PowerShell. Jeśli użytkownik instaluje, aktualizuje lub zapisuje moduł przy użyciu programu PowerShellGet, bezpośrednio lub jako zależność dla innego pakietu, a ten moduł wymaga od użytkownika wyrażenia zgody na licencję, użytkownik musi wskazać, że akceptuje licencję lub operacja zakończy się niepowodzeniem.

Wymagania dotyczące publikowania modułów

Moduły, które chciałyby wymagać od użytkowników akceptacji licencji, powinny spełniać następujące wymagania:

  • Sekcja PSData manifestu modułu powinna zawierać RequireLicenseAcceptance = $True.
  • Moduł powinien zawierać license.txt plik w katalogu głównym.
  • Manifest modułu powinien zawierać identyfikator URI licencji.
  • Moduł powinien zostać opublikowany przy użyciu PowerShellGet Format w wersji 2.0 lub nowszej.

Wpływ na instalację/zapisz/Update-Module

  • Polecenia cmdlet Install/Save/Update obsługują nowy parametr AcceptLicense , który zachowuje się tak, jakby użytkownik widział licencję.
  • Jeśli parametr RequiredLicenseAcceptance ma wartość True i nie zostanie określony parametr AcceptLicense , użytkownikowi zostanie wyświetlony symbol license.txti zostanie wyświetlony monit o następującej treści: Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Jeśli licencja zostanie zaakceptowana
      • Save-Module: moduł jest kopiowany do systemu użytkownika
      • Install-Module: moduł jest kopiowany do systemu użytkownika do odpowiedniego folderu (w zależności od zakresu)
      • Update-Module: moduł jest aktualizowany.
    • Jeśli licencja zostanie odrzucona.
      • Operacja została anulowana.
      • Wszystkie polecenia cmdlet sprawdzają, czy nie ma metadanych (requireLicenseAcceptance i Format Version), które informują, że wymagana jest akceptacja licencji
      • Jeśli wersja formatu klienta jest starsza niż 2.0, operacja kończy się niepowodzeniem i prosi użytkownika o zaktualizowanie klienta.
      • Jeśli moduł został opublikowany w wersji formatu starszej niż 2.0, flaga requireLicenseAcceptance jest ignorowana.

Zależności modułów

  • Podczas operacji instalacji/zapisywania/aktualizacji, jeśli moduł zależny (coś innego zależy od modułu) wymaga akceptacji licencji, wymagane jest zachowanie akceptacji licencji (powyżej).
  • Jeśli wersja modułu jest już wymieniona w katalogu lokalnym jako zainstalowana w systemie, pominęlibyśmy sprawdzanie licencji.
  • Podczas operacji instalacji/zapisywania/aktualizowania, jeśli moduł zależny wymaga licencji, a akceptacja licencji nie nastąpi, operacja zakończy się niepowodzeniem i będzie przebiegać zgodnie z normalnymi procesami dla pakietu, którego nie można zainstalować/zapisać/zaktualizować.

Wpływ na -Force

Określenie –Force NIE jest wystarczające do zaakceptowania licencji. –AcceptLicense jest wymagany, aby uzyskać pozwolenie na instalację. Jeśli –Force zostanie określony, RequiredLicenseAcceptance ma wartość True i –AcceptLicense NIE zostanie określony, operacja zakończy się niepowodzeniem.

PRZYKŁADY

Przykład 1: Aktualizowanie manifestu modułu w celu wymagania akceptacji licencji

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

To polecenie aktualizuje plik manifestu i ustawia flagę RequireLicenseAcceptance na wartość true.

Przykład 2: Instalacja modułu wymagającego akceptacji licencji

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"):

To polecenie pokazuje licencję z license.txt pliku i monituje użytkownika o zaakceptowanie licencji.

Przykład 3: Instalacja modułu wymagającego akceptacji licencji za pomocą -AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Moduł jest instalowany bez monitu o akceptację licencji.

Przykład 4: Zainstaluj moduł wymagający akceptacji licencji za pomocą -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

Przykład 5: Instalacja modułu z zależnościami wymagającymi akceptacji licencji

Moduł ModuleWithDependency zależy od modułu ModuleRequireLicenseAcceptance. Użytkownik zostanie poproszony o zaakceptowanie licencji.

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"):

Przykład 6: Instalacja modułu z zależnościami wymagającymi akceptacji licencji i -AcceptLicense

Moduł ModuleWithDependency zależy od modułu ModuleRequireLicenseAcceptance. Użytkownik nie jest monitowany o zaakceptowanie licencji, ponieważ określono opcję AcceptLicense .

Install-Module -Name ModuleWithDependency -AcceptLicense

Przykład 7: Zainstaluj moduł wymagający akceptacji licencji na kliencie starszym niż 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'.

Przykład 8: Zapisz moduł wymagający akceptacji licencji

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"):

To polecenie pokazuje licencję z license.txt pliku i monituje użytkownika o zaakceptowanie licencji.

Przykład 9: Zapisz moduł wymagający akceptacji licencji za pomocą -AcceptLicense

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

Moduł jest zapisywany bez monitu o akceptację licencji.

Przykład 10: Moduł aktualizacji wymagający akceptacji licencji

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"):

To polecenie pokazuje licencję z license.txt pliku i monituje użytkownika o zaakceptowanie licencji.

Przykład 11: Moduł aktualizacji wymagający akceptacji licencji za pomocą -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Moduł jest aktualizowany bez monitu o akceptację licencji.

Więcej szczegółów

Wymagaj akceptacji licencji dla skryptów

Wymagaj obsługi akceptacji licencji w programie PowerShellGallery

Wymagaj akceptacji licencji podczas wdrażania w usłudze Azure Automation