Module, die eine Zustimmung zur Lizenz erfordern
ZUSAMMENFASSUNG
Die Rechtsabteilungen einiger Modulherausgeber verlangen, dass Kunden der Lizenz explizit zustimmen, bevor sie das Modul aus dem PowerShell-Katalog installieren. Wenn ein Benutzer ein Modul mit PowerShellGet installiert, aktualisiert oder speichert (entweder direkt oder in Abhängigkeit von einem anderen Paket) und dieses Modul erfordert, dass der Benutzer einer Lizenz zustimmt, muss der Benutzer die Lizenzbedingungen akzeptieren, da der Vorgang sonst fehlschlägt.
Veröffentlichungsanforderungen für Module
Module, für die die Benutzer einer Lizenz zustimmen sollen, müssen folgende Anforderungen erfüllen:
- Der PSData-Abschnitt des Modulmanifests muss „RequireLicenseAcceptance = $True“ enthalten.
- Das Stammverzeichnis des Moduls muss die Datei „license.txt“ enthalten.
- Das Modulmanifest muss den Lizenz-URI enthalten.
- Das Modul muss mit PowerShellGet Format, Version 2.0 und höher, veröffentlicht werden.
Auswirkungen auf „Install-Module“, „Save-Module“ und „Update-Module“
- Die Cmdlets „Install“, „Save“ und „Update“ unterstützen den neuen Parameter AcceptLicense, der vorgibt, dass der Benutzer die Lizenz gesehen hat.
- Wenn RequiredLicenseAcceptance TRUE lautet und AcceptLicense nicht angegeben ist, werden dem Benutzer die Datei „
license.txt
“ und die folgende Meldung angezeigt:Do you accept these license terms (Yes/No/YesToAll/NoToAll)
.- Bei Zustimmung zur Lizenz
- Save-Module: Das Modul wird auf das System des Benutzers kopiert.
- Install-Module: Das Modul wird (basierend auf dem Bereich) in den richtigen Ordner auf dem System des Benutzers kopiert.
- Update-Module: Das Modul wird aktualisiert.
- Bei Ablehnung der Lizenz.
- Vorgang wurde abgebrochen.
- Alle Cmdlets suchen nach den Metadaten (requireLicenseAcceptance und Formatversion), die besagen, dass eine Zustimmung zur Lizenz erforderlich ist.
- Wenn die Formatversion des Clients älter als 2.0 ist, verursacht der Vorgang einen Fehler, und der Benutzer wird zum Aktualisieren des Clients aufgefordert.
- Wenn das Modul mit einer älteren Formatversion als 2.0 veröffentlicht wurde, wird das Flag „requireLicenseAcceptance“ ignoriert.
- Bei Zustimmung zur Lizenz
Modulabhängigkeiten
- Während des Vorgangs zum Installieren/Speichern/Aktualisieren ist das obige Lizenzzustimmungsverhalten erforderlich, falls ein abhängiges Modul (ein anderes vom Modul abhängiges Element) die Zustimmung zur Lizenz verlangt.
- Wenn die Modulversion im lokalen Katalog bereits als auf dem System installiert aufgeführt ist, wird die Lizenzüberprüfung umgangen.
- Wenn ein abhängiges Modul beim Installieren/Speichern/Aktualisieren eine Lizenz benötigt und die Zustimmung zur Lizenz nicht erfolgt, verursacht der Vorgang einen Fehler und folgt den normalen Prozessen für das Paket, das nicht installiert/gespeichert/aktualisiert werden kann.
Auswirkungen auf -Force
Die Angabe von –Force
reicht zum Akzeptieren einer Lizenz NICHT aus. –AcceptLicense
ist für die Berechtigung zum Installieren erforderlich. Wenn –Force
angegeben wird, RequiredLicenseAcceptance TRUE lautet und –AcceptLicense
NICHT angegeben ist, tritt ein Fehler auf.
BEISPIELE
Beispiel 1: Aktualisieren des Modulmanifests zum Anfordern der Zustimmung zur Lizenz
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
Dieser Befehl aktualisiert die Manifestdatei und legt das RequireLicenseAcceptance-Flag auf TRUE fest.
Beispiel 2: Installieren eines Moduls, das die Zustimmung zur Lizenz erfordert
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"):
Dieser Befehl zeigt die Lizenz aus der Datei „license.txt
“ an und fordert den Benutzer auf, die Lizenzbedingungen zu akzeptieren.
Beispiel 3: Installieren eines Moduls, das die Zustimmung zur Lizenz erfordert, mit -AcceptLicense
Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense
Das Modul wird ohne Aufforderung zum Akzeptieren der Lizenz installiert.
Beispiel 4: Installieren eines Moduls, das die Zustimmung zur Lizenz mit -Force erfordert
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
Beispiel 5: Installieren eines Moduls mit Abhängigkeiten, die die Zustimmung zur Lizenz erfordern
Das Modul ModuleWithDependency hängt vom Modul ModuleRequireLicenseAcceptance ab. Der Benutzer wird zum Akzeptieren der Lizenz aufgefordert.
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"):
Beispiel 6: Installieren eines Moduls mit Abhängigkeiten, die die Zustimmung zur Lizenz erfordern, und -AcceptLicense
Das Modul ModuleWithDependency hängt vom Modul ModuleRequireLicenseAcceptance ab. Der Benutzer wird nicht zum Akzeptieren der Lizenz aufgefordert, weil AcceptLicense angegeben wurde.
Install-Module -Name ModuleWithDependency -AcceptLicense
Beispiel 7: Installieren eines Moduls, das die Zustimmung zur Lizenz erfordert, auf einem Client, der eine ältere Version als PSGetFormatVersion 2.0 ausführt
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'.
Beispiel 8: Speichern eines Moduls, das die Zustimmung zur Lizenz erfordert
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"):
Dieser Befehl zeigt die Lizenz aus der Datei „license.txt
“ an und fordert den Benutzer auf, die Lizenzbedingungen zu akzeptieren.
Beispiel 9: Speichern eines Moduls, das die Zustimmung zur Lizenz erfordert, mit -AcceptLicense
Save-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense -Path C:\Saved
Das Modul wird ohne Aufforderung zum Akzeptieren der Lizenz gespeichert.
Beispiel 10: Aktualisieren eines Moduls, das die Zustimmung zur Lizenz erfordert
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"):
Dieser Befehl zeigt die Lizenz aus der Datei „license.txt
“ an und fordert den Benutzer auf, die Lizenzbedingungen zu akzeptieren.
Beispiel 11: Aktualisieren eines Moduls, das die Zustimmung zur Lizenz erfordert, mit -AcceptLicense
Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense
Das Modul wird ohne Aufforderung zum Akzeptieren der Lizenz aktualisiert.
Weitere Informationen
Erforderliche Zustimmung zur Lizenz für Skripts
Unterstützung für das Anfordern der Zustimmung zur Lizenz in PowerShellGallery
Erforderliche Zustimmung zur Lizenz für die Bereitstellung in Azure Automation
PowerShell Gallery