Dela via


Moduler som kräver godkännande av licensen

SAMMANFATTNING

Juridiska avdelningar för vissa modulutgivare kräver att kunderna uttryckligen måste godkänna licensen innan de installerar sin modul från PowerShell-galleriet. Om en användare installerar, uppdaterar eller sparar en modul med PowerShellGet, antingen direkt eller som ett beroende för ett annat paket, och den modulen kräver att användaren godkänner en licens, måste användaren ange att de accepterar licensen eller att åtgärden misslyckas.

Publiceringskrav för moduler

Moduler som vill kräva att användarna accepterar licensen bör uppfylla följande krav:

  • PSData-avsnittet i modulmanifestet bör innehålla RequireLicenseAcceptance = $True.
  • Modulen ska innehålla license.txt fil i rotkatalogen.
  • Modulmanifestet ska innehålla Licens-URI.
  • Modulen bör publiceras med PowerShellGet-format version 2.0 och senare.

Påverkan på installation/spara/uppdatera-modul

  • Cmdletarna Install/Save/Update stöder en ny parameter AcceptLicense som fungerar som om användaren såg licensen.
  • Om RequiredLicenseAcceptance är Sant och AcceptLicense inte har angetts visas användaren och license.txtuppmanas med: Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Om licensen godkänns
      • Spara-modul: modulen kopieras till användarens system
      • Install-Module: modulen kopieras till användarens system till rätt mapp (baserat på omfång)
      • Uppdateringsmodul: modulen uppdateras.
    • Om licensen nekas.
      • Åtgärden avbryts.
      • Alla cmdletar söker efter metadata (kräverLicenseAcceptance och formatversion) som säger att en licensgodkännande krävs
      • Om formatversionen av klienten är äldre än 2.0 misslyckas åtgärden och användaren uppmanas att uppdatera klienten.
      • Om modulen publicerades med en äldre formatversion än 2.0 ignoreras flaggan requireLicenseAcceptance.

Modulberoenden

  • Om en beroende modul (något annat är beroende av modulen) kräver licensgodkännande under åtgärden Installera/spara/uppdatera krävs licensgodkännandet (ovan).
  • Om modulversionen redan visas i den lokala katalogen som installerad på systemet kringgår vi licenskontrollen.
  • Under åtgärden Installera/spara/uppdatera, om en beroende modul kräver en licens och licensgodkännandet inte sker, misslyckas åtgärden och följer normala processer för paketet som inte kunde installera/spara/uppdatera.

Påverkan på -Force

Att –Force ange är INTE tillräckligt för att acceptera en licens. –AcceptLicense krävs för behörighet att installera. Om –Force anges är RequiredLicenseAcceptance Sant och –AcceptLicense anges INTE. Åtgärden misslyckas.

EXEMPEL

Exempel 1: Uppdatera modulmanifestet för att kräva licensgodkännande

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

Det här kommandot uppdaterar manifestfilen och anger flaggan RequireLicenseAcceptance till true.

Exempel 2: Installera modulen som kräver licensgodkännande

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

Det här kommandot visar licensen från license.txt filen och uppmanar användaren att acceptera licensen.

Exempel 3: Installera modulen som kräver licensgodkännande med -AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Modulen installeras utan att du uppmanas att acceptera licensen.

Exempel 4: Installera modulen som kräver licensgodkännande med -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

Exempel 5: Installera modulen med beroenden som kräver licensgodkännande

Module ModuleWithDependency beror på modulmodulen ModuleRequireLicenseAcceptance. Användaren uppmanas att acceptera licensen.

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

Exempel 6: Installera modulen med beroenden som kräver licensgodkännande och -AcceptLicense

Module ModuleWithDependency beror på modulmodulen ModuleRequireLicenseAcceptance. Användaren uppmanas inte att acceptera licensen eftersom AcceptLicense har angetts.

Install-Module -Name ModuleWithDependency -AcceptLicense

Exempel 7: Installera modul som kräver licensgodkännande på en klient som är äldre än 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'.

Exempel 8: Spara modulen som kräver licensgodkännande

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

Det här kommandot visar licensen från license.txt filen och uppmanar användaren att acceptera licensen.

Exempel 9: Spara modulen som kräver licensgodkännande med -AcceptLicense

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

Modulen sparas utan att du uppmanas att acceptera licensen.

Exempel 10: Uppdateringsmodul som kräver licensgodkännande

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

Det här kommandot visar licensen från license.txt filen och uppmanar användaren att acceptera licensen.

Exempel 11: Uppdateringsmodul som kräver licensgodkännande med -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Modulen uppdateras utan att du uppmanas att acceptera licensen.

Mer information

Kräv godkännande av licensen för skript

Kräv stöd för godkännande av licens på PowerShellGallery

Kräv godkännande av licensen vid distribuera till Azure Automation