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.txt
i 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.
- Jeśli licencja została zaakceptowana
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
PowerShell Gallery