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 Hjälp av 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, annars misslyckas åtgärden.

Publicera krav för moduler

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

  • AVSNITTET PSData i modulmanifestet ska 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

  • Install/Save/Update cmdlets stöder en ny parameter AcceptLicense som beter sig som om användaren såg licensen.
  • Om RequiredLicenseAcceptance är True och AcceptLicense inte har angetts visas license.txtanvändaren och uppmanas 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)
      • Update-Module: modulen uppdateras.
    • Om licensen nekas.
      • Åtgärden har avbrutits.
      • 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 har publicerats med en tidigare formatversion än 2.0 ignoreras flaggan requireLicenseAcceptance.

Modulberoenden

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

Påverkan på -Force

Det räcker INTE att –Force ange för att acceptera en licens. –AcceptLicense krävs för behörighet att installera. Om –Force anges är RequiredLicenseAcceptance Sant och –AcceptLicense har INTE angetts misslyckas åtgärden.

EXEMPEL

Exempel 1: Uppdatera modulmanifestet så att licensgodkännande krävs

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 godkänna licensen.

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

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Modulen installeras utan att du uppmanas att godkänna 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 modul med beroenden som kräver licensgodkännande

Module ModuleWithDependency är beroende av modulen 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 modul med beroenden som kräver licensgodkännande och -AcceptLicense

Module ModuleWithDependency är beroende av modulen ModuleRequireLicenseAcceptance. Användaren uppmanas inte att acceptera licensen eftersom AcceptLicense har angetts.

Install-Module -Name ModuleWithDependency -AcceptLicense

Exempel 7: Installera modulen 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 godkännande av licens

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 godkänna 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 godkänna licensen.

Exempel 10: Uppdateringsmodul som kräver godkännande av licens

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 godkänna licensen.

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

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Modulen uppdateras utan att du uppmanas att godkänna 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