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 modułu 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 kończy się niepowodzeniem.

Wymagania dotyczące publikowania dla modułów

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

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

Wpływ na instalowanie/zapisywanie/aktualizowanie modułu

  • Polecenia cmdlet Install/Save/Update obsługują nowy parametr AcceptLicense , który zachowuje się tak, jakby użytkownik zobaczył licencję.
  • Jeśli parametr RequiredLicenseAcceptance ma wartość True, a wartość AcceptLicense nie jest określona, użytkownik jest wyświetlany w poleceniu license.txti wyświetla monit z: Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Jeśli licencja została zaakceptowana
      • Save-Module: moduł jest kopiowany do systemu użytkownika
      • Install-Module: moduł jest kopiowany do systemu użytkownika do odpowiedniego folderu (na podstawie zakresu)
      • Update-Module: moduł jest aktualizowany.
    • Jeśli licencja zostanie odrzucona.
      • Operacja została anulowana.
      • Wszystkie polecenia cmdlet sprawdzają metadane (requireLicenseAcceptance i Wersja formatu), które mówią, ż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 z wersją formatu starszą niż 2.0, flaga requireLicenseAcceptance jest ignorowana.

Zależności modułów

  • Podczas operacji Zainstaluj/Zapisz/Aktualizuj, 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, pomijamy sprawdzanie licencji.
  • Podczas operacji Install/Save/Update, jeśli moduł zależny wymaga licencji, a akceptacja licencji nie występuje, operacja kończy się niepowodzeniem i jest zgodna z normalnymi procesami pakietu nie można zainstalować/zapisać/zaktualizować.

Wpływ na -Force

–Force Określenie nie jest wystarczające do zaakceptowania licencji. –AcceptLicense program jest wymagany do zainstalowania uprawnień. Jeśli –Force określono wartość RequiredLicenseAcceptance ma wartość True i –AcceptLicense nie jest określona, operacja koń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 true.

Przykład 2. Instalowanie 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 wyświetla licencję z license.txt pliku i monituje użytkownika o zaakceptowanie licencji.

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

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Moduł jest instalowany bez monitu o zaakceptowanie licencji.

Przykład 4. Instalowanie modułu wymagającego akceptacji licencji za pomocą polecenia -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. Instalowanie modułu z zależnościami wymagającymi akceptacji licencji

Moduł ModuleWithDependency zależy od modułu ModuleRequireLicenseAcceptance. Użytkownik jest monitowany 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: Instalowanie 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 wartość AcceptLicense .

Install-Module -Name ModuleWithDependency -AcceptLicense

Przykład 7: Instalowanie modułu wymagającego 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. Zapisywanie modułu wymagającego 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 wyświetla licencję z license.txt pliku i monituje użytkownika o zaakceptowanie licencji.

Przykład 9: Zapisywanie modułu wymagającego akceptacji licencji za pomocą polecenia -AcceptLicense

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

Moduł jest zapisywany bez monitu o zaakceptowanie licencji.

Przykład 10: Aktualizowanie modułu wymagającego 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 wyświetla licencję z license.txt pliku i monituje użytkownika o zaakceptowanie licencji.

Przykład 11: Aktualizacja modułu wymagającego akceptacji licencji za pomocą polecenia -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Moduł jest aktualizowany bez monitu o zaakceptowanie licencji.

Więcej szczegółów

Wymaganie akceptacji licencji na potrzeby skryptów

Wymagaj obsługi akceptacji licencji w programie PowerShellGallery

Wymaganie akceptacji licencji na potrzeby wdrażania w usłudze Azure Automation