Freigeben über


Module, für die eine Lizenzannahme erforderlich ist

ZUSAMMENFASSUNG

Die Rechtsabteilungen einiger Modulherausgeber verlangen, dass Kunden die Lizenz explizit akzeptieren müssen, bevor sie ihr Modul aus dem PowerShell-Katalog installieren. Wenn ein Benutzer ein Modul mithilfe von PowerShellGet installiert, aktualisiert oder speichert, sei es direkt oder als Abhängigkeit für ein anderes Paket, und dieses Modul erfordert, dass der Benutzer einer Lizenz zustimmt, muss der Benutzer angeben, dass er die Lizenz akzeptiert, oder der Vorgang schlägt fehl.

Veröffentlichen von Anforderungen für Module

Module, bei denen Benutzer die Lizenz akzeptieren müssen, sollten die folgenden Anforderungen erfüllen:

  • Der PSData-Abschnitt des Modulmanifests sollte RequireLicenseAcceptance = $True enthalten.
  • Das Modul sollte license.txt Datei im Stammverzeichnis enthalten.
  • Das Modulmanifest sollte den Lizenz-URI enthalten.
  • Das Modul sollte mit PowerShellGet Format Version 2.0 und höher veröffentlicht werden.

Auswirkungen auf Installieren/Speichern/Update-Module

  • Install/Save/Update-Cmdlets unterstützen den neuen Parameter AcceptLicense , der sich so verhält, als ob der Benutzer die Lizenz gesehen hätte.
  • Wenn RequiredLicenseAcceptance auf True festgelegt ist und AcceptLicense nicht angegeben ist, wird dem Benutzer die license.txtangezeigt und mit folgendem Do you accept these license terms (Yes/No/YesToAll/NoToAll)Aufforderungssignal aufgefordert: .
    • Wenn die Lizenz akzeptiert wird
      • Save-Module: Das Modul wird auf das System des Benutzers kopiert
      • Install-Module: Das Modul wird auf das System des Benutzers in den richtigen Ordner kopiert (basierend auf dem Umfang)
      • Update-Modul: Das Modul wird aktualisiert.
    • Wenn die Lizenz abgelehnt wird.
      • Der Vorgang wird abgebrochen.
      • Alle Cmdlets prüfen auf die Metadaten (requireLicenseAcceptance und Format Version), die besagen, dass eine Lizenzannahme erforderlich ist
      • Wenn die Formatversion des Clients älter als 2.0 ist, schlägt der Vorgang fehl und fordert den Benutzer auf, den Client zu aktualisieren.
      • Wenn das Modul mit einer Formatversion veröffentlicht wurde, die älter als 2.0 ist, wird das requireLicenseAcceptance-Flag ignoriert.

Modul-Abhängigkeiten

  • Wenn während des Installations-/Speicher-/Aktualisierungsvorgangs ein abhängiges Modul (etwas anderes hängt vom Modul ab) eine Lizenzannahme erfordert, ist das Lizenzannahmeverhalten (oben) erforderlich.
  • Wenn die Modulversion bereits im lokalen Katalog als auf dem System installiert aufgeführt ist, würden wir die Lizenzprüfung umgehen.
  • Wenn während des Installations-/Speicher-/Aktualisierungsvorgangs für ein abhängiges Modul eine Lizenz erforderlich ist und die Lizenzannahme nicht erfolgt, schlägt der Vorgang fehl und führt die normalen Prozesse für das Paket aus, das nicht installiert/gespeichert/aktualisiert werden konnte.

Auswirkungen auf die -Force

Die Angabe –Force ist NICHT ausreichend, um eine Lizenz zu akzeptieren. –AcceptLicense ist für die Berechtigung zur Installation erforderlich. Wenn –Force angegeben ist, ist RequiredLicenseAcceptance True und –AcceptLicense NICHT angegeben, schlägt der Vorgang fehl.

BEISPIELE

Beispiel 1: Aktualisieren des Modulmanifests, um eine Lizenzannahme zu erzwingen

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

Mit diesem Befehl wird die Manifestdatei aktualisiert und das RequireLicenseAcceptance-Flag auf true festgelegt.

Beispiel 2: Installieren des Moduls, das eine Lizenzannahme 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 license.txt der Datei an und fordert den Benutzer auf, die Lizenz zu akzeptieren.

Beispiel 3: Installieren des Moduls, das eine Lizenzannahme mit -AcceptLicense erfordert

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Das Modul wird installiert, ohne dass eine Aufforderung zur Lizenzannahme erforderlich ist.

Beispiel 4: Installieren des Moduls, das eine Lizenzannahme 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 eine Lizenzannahme erfordern

Das Modul ModuleWithDependency hängt vom Modul ModuleRequireLicenseAcceptance ab. Der Benutzer wird aufgefordert, die Lizenz zu akzeptieren.

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 eine Lizenzakzeptanz und --AcceptLicense erfordern

Das Modul ModuleWithDependency hängt vom Modul ModuleRequireLicenseAcceptance ab. Der Benutzer wird nicht aufgefordert, die Lizenz zu akzeptieren, da AcceptLicense angegeben ist.

Install-Module -Name ModuleWithDependency -AcceptLicense

Beispiel 7: Installieren eines Moduls, das eine Lizenzannahme erfordert, auf einem Client, der älter als PSGetFormatVersion 2.0 ist

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: Speichermodul, das eine Lizenzannahme 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 license.txt der Datei an und fordert den Benutzer auf, die Lizenz zu akzeptieren.

Beispiel 9: Speichermodul, das eine Lizenzannahme mit -AcceptLicense erfordert

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

Das Modul wird gespeichert, ohne dass die Lizenz akzeptiert werden muss.

Beispiel 10: Update-Modul, das eine Lizenzannahme 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 license.txt der Datei an und fordert den Benutzer auf, die Lizenz zu akzeptieren.

Beispiel 11: Update-Modul, das eine Lizenzannahme mit -AcceptLicense erfordert

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Das Modul wird aktualisiert, ohne dass eine Aufforderung zur Annahme der Lizenz erforderlich ist.

Weitere Details

Lizenzannahme für Skripte erforderlich

Anfordern der Unterstützung für die Lizenzannahme in PowerShellGallery

Anfordern der Lizenzannahme bei der Bereitstellung in Azure Automation