Moduli per cui è richiesta l'accettazione della licenza

RIEPILOGO

Gli uffici legali di alcuni editori di moduli richiedono che i clienti accettino in modo esplicito la licenza prima di installare il modulo da PowerShell Gallery. Se un utente installa, aggiorna o salva un modulo con PowerShellGet, direttamente o come dipendenza per un altro pacchetto, e tale modulo richiede all'utente di accettare una licenza, l'utente deve confermare l'accettazione della licenza o l'operazione ha esito negativo.

Requisiti di pubblicazione per i moduli

I moduli che prevedono la richiesta di accettazione della licenza da parte degli utenti devono soddisfare i requisiti seguenti:

  • La sezione PSData del manifesto del modulo deve includere RequireLicenseAcceptance = $True.
  • Il modulo deve contenere il file license.txt nella directory radice.
  • Il manifesto del modulo deve contenere l'URI della licenza.
  • Il modulo deve essere pubblicato con la versione 2.0 e successive del formato PowerShellGet.

Impatto sui cmdlet Install/Save/Update-Module

  • I cmdlet Install/Save/Update supportano il nuovo parametro AcceptLicense che specifica un comportamento corrispondente alla presa in visione e accettazione della licenza da parte dell'utente.
  • Se RequiredLicenseAcceptance è True e il parametro AcceptLicense non viene specificato, l'utente visualizza license.txt e il messaggio Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Se la licenza viene accettata
      • Save-Module: il modulo viene copiato nel sistema dell'utente
      • Install-Module: il modulo viene copiato nel sistema dell'utente nella cartella appropriata, in base all'ambito
      • Update-Module: il modulo viene aggiornato.
    • Se la licenza non viene accettata.
      • L'operazione viene annullata.
      • Tutti i cmdlet controllano se sono presenti i metadati (requireLicenseAcceptance e versione del formato) a indicare che è richiesta l'accettazione della licenza
      • Se la versione del formato del client è precedente alla 2.0, l'operazione ha esito negativo e viene richiesto all'utente di aggiornare il client.
      • Se il modulo è stato pubblicato con una versione del formato precedente alla 2.0, il flag requireLicenseAcceptance viene ignorato.

Dipendenze del modulo

  • Durante le operazioni Install/Save/Update, se un modulo dipendente (qualcos'altro dipende dal modulo) richiede l'accettazione della licenza, è richiesto il comportamento di accettazione della licenza sopra descritto.
  • Se la versione del modulo è già elencata nel catalogo locale come installata nel sistema, il controllo della licenza non viene eseguito.
  • Durante le operazioni Install/Save/Update, se un modulo dipendente richiede una licenza e la licenza non viene accettata, l'operazione ha esito negativo e si seguono i processi normali per i casi di installazione/salvataggio/aggiornamento non riusciti per il pacchetto.

Impatto su -Force

Specificare –Force NON è sufficiente per accettare una licenza. Per autorizzare l'installazione è richiesto il parametro –AcceptLicense. Se si specifica il parametro –Force, RequiredLicenseAcceptance è True e il parametro –AcceptLicense NON viene specificato, l'operazione ha esito negativo.

ESEMPI

Esempio 1: aggiornare il manifesto del modulo per richiedere l'accettazione della licenza

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

Questo comando aggiorna il file manifesto e imposta il flag RequireLicenseAcceptance su true.

Esempio 2: installare un modulo che richiede l'accettazione della licenza

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

Questo comando visualizza la licenza dal file license.txt e richiede all'utente di accettare la licenza.

Esempio 3: installare un modulo che richiede l'accettazione della licenza con -AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Il modulo viene installato senza visualizzare alcuna richiesta di accettazione della licenza.

Esempio 4: installare un modulo che richiede l'accettazione della licenza con -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

Esempio 5: installare un modulo con dipendenze che richiede l'accettazione della licenza

Il modulo ModuleWithDependency dipende dal modulo ModuleRequireLicenseAcceptance. All'utente viene richiesto di accettare la licenza.

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

Esempio 6: installare un modulo con dipendenze che richiede l'accettazione della licenza e il parametro -AcceptLicense

Il modulo ModuleWithDependency dipende dal modulo ModuleRequireLicenseAcceptance. All'utente non viene richiesto di accettare la licenza perché è specificato il parametro AcceptLicense.

Install-Module -Name ModuleWithDependency -AcceptLicense

Esempio 7: installare un modulo che richiede l'accettazione della licenza in un client meno recente di 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'.

Esempio 8: salvare un modulo che richiede l'accettazione della licenza

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

Questo comando visualizza la licenza dal file license.txt e richiede all'utente di accettare la licenza.

Esempio 9: salvare un modulo che richiede l'accettazione della licenza con -AcceptLicense

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

Il modulo viene salvato senza alcuna richiesta di accettazione della licenza.

Esempio 10: aggiornare un modulo che richiede l'accettazione della licenza

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

Questo comando visualizza la licenza dal file license.txt e richiede all'utente di accettare la licenza.

Esempio 11: aggiornare un modulo che richiede l'accettazione della licenza con -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Il modulo viene aggiornato senza alcuna richiesta di accettazione della licenza.

Altre informazioni

Richiedere l'accettazione della licenza per gli script

Richiedere il supporto dell'accettazione della licenza in PowerShell Gallery

Richiedere l'accettazione della licenza per la distribuzione in Automazione di Azure