Partilhar via


Módulos que Exigem a Aceitação da Licença

SINOPSE

Os departamentos jurídicos de alguns editores de módulos exigem que os clientes aceitem explicitamente a licença antes de instalarem o módulo a partir de Galeria do PowerShell. Se um utilizador instalar, atualizar ou guardar um módulo com o PowerShellGet, seja diretamente ou como uma dependência de outro pacote, e esse módulo exigir que o utilizador concorde com uma licença, o utilizador tem de indicar que aceita a licença ou a operação falha.

Requisitos de Publicação para Módulos

Os módulos que gostariam de exigir que os utilizadores aceitem a licença devem cumprir os seguintes requisitos:

  • A secção PSData do manifesto do módulo deve incluir RequireLicenseAcceptance = $True.
  • O módulo deve conter license.txt ficheiro no diretório de raiz.
  • O manifesto do módulo deve conter o Uri de Licença.
  • O módulo deve ser publicado com a Versão 2.0 e superior do PowerShellGet Format.

Impacto na Instalação/Guardar/Atualizar-Módulo

  • Os cmdlets Install/Save/Update suportam um novo parâmetro AcceptLicense que se comporta como se o utilizador visse a licença.
  • Se RequiredLicenseAcceptance for True e AcceptLicense não for especificado, é apresentado o e pedido ao license.txtutilizador com: Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Se a licença for aceite
      • Save-Module: o módulo é copiado para o sistema do utilizador
      • Install-Module: o módulo é copiado para o sistema do utilizador para a pasta adequada (com base no âmbito)
      • Update-Module: o módulo é atualizado.
    • Se a licença for recusada.
      • A operação foi cancelada.
      • Todos os cmdlets verificam os metadados (requireLicenseAcceptance e Format Version) que dizem que é necessária uma aceitação da licença
      • Se a versão de formato do cliente for superior a 2.0, a operação falhará e pedirá ao utilizador para atualizar o cliente.
      • Se o módulo tiver sido publicado com a versão de formato anterior a 2.0, o sinalizador requireLicenseAcceptance é ignorado.

Dependências do Módulo

  • Durante a operação Instalar/Guardar/Atualizar, se um módulo dependente (outra coisa depende do módulo) exigir a aceitação da licença, é necessário o comportamento de aceitação da licença (acima).
  • Se a versão do módulo já estiver listada no catálogo local como estando instalada no sistema, ignoraríamos a verificação de licenças.
  • Durante a operação Instalar/Guardar/Atualizar, se um módulo dependente precisar de uma licença e a aceitação da licença não ocorrer, a operação falha e segue os processos normais para o pacote que não conseguiu instalar/guardar/atualizar.

Impacto em -Force

Especificar –Force não é suficiente para aceitar uma licença. –AcceptLicense é necessário para a permissão de instalação. Se –Force for especificado, RequiredLicenseAcceptance é Verdadeiro e –AcceptLicense NÃO é especificado, a operação falha.

EXEMPLOS

Exemplo 1: Atualizar o Manifesto do Módulo para exigir a aceitação da licença

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

Este comando atualiza o ficheiro de manifesto e define o sinalizador RequireLicenseAcceptance como verdadeiro.

Exemplo 2: Instalar o Módulo que requer a aceitação da licença

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

Este comando mostra a licença do license.txt ficheiro e pede ao utilizador para aceitar a licença.

Exemplo 3: Instalar o Módulo que requer a aceitação da licença com -AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

O módulo é instalado sem qualquer pedido de aceitação de licença.

Exemplo 4: Instalar o Módulo que requer a aceitação da licença com -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

Exemplo 5: Instalar o Módulo com dependências que requerem a aceitação da licença

Module ModuleWithDependency depende do módulo ModuleRequireLicenseAcceptance. É pedido ao utilizador que aceite a licença.

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

Exemplo 6: Instalar o Módulo com dependências que requerem a aceitação da licença e -AcceptLicense

Module ModuleWithDependency depende do módulo ModuleRequireLicenseAcceptance. O utilizador não é solicitado a aceitar a licença, uma vez que AcceptLicense é especificado.

Install-Module -Name ModuleWithDependency -AcceptLicense

Exemplo 7: instalar o módulo que requer a aceitação da licença num cliente com mais de 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'.

Exemplo 8: Guardar Módulo que requer a aceitação da licença

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

Este comando mostra a licença do license.txt ficheiro e pede ao utilizador para aceitar a licença.

Exemplo 9: Guardar Módulo que requer a aceitação da licença com -AcceptLicense

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

O módulo é guardado sem qualquer pedido de aceitação de licença.

Exemplo 10: Módulo de Atualização que requer a aceitação da licença

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

Este comando mostra a licença do license.txt ficheiro e pede ao utilizador para aceitar a licença.

Exemplo 11: Módulo de atualização que requer a aceitação da licença com -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

O módulo é atualizado sem qualquer pedido de aceitação de licença.

Mais detalhes

Exigir a Aceitação da Licença para os Scripts

Exigir suporte de Aceitação de Licenças no PowerShellGallery

Solicitar a Aceitação da Licença ao Implementar a Automatização do Azure