Módulos que exigem a aceitação da licença

SINOPSE

Os departamentos jurídicos de alguns publicadores de módulo exigem que os clientes aceitem explicitamente a licença antes de instalar o módulo da Galeria do PowerShell. Se um usuário instala, atualiza ou salva um módulo, usando o PowerShellGet, seja diretamente ou como uma dependência de outro pacote, e esse módulo exige que o usuário concorde com uma licença, o usuário deverá indicar que aceita a licença ou a operação falhará.

Requisitos de publicação para os módulos

Os módulos que gostariam de exigir dos usuários a aceitação da licença devem atender aos seguintes requisitos:

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

Impacto em Install/Save/Update-Module

  • Os cmdlets Install/Save/Update dão suporte a um novo parâmetro AcceptLicense que se comporta como se o usuário tivesse visto a licença.
  • Se RequiredLicenseAcceptance é True e AcceptLicense não está especificado, o usuário vê license.txt e recebe a pergunta: Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Se a licença for aceita
      • Save-Module: o módulo é copiado no sistema do usuário
      • Install-Module: o módulo é copiado no sistema do usuário, na pasta apropriada (com base no escopo)
      • Update-Module: o módulo é atualizado.
    • Se a licença for recusada.
      • A operação é cancelada.
      • Todos os cmdlets verificam a existência dos metadados (requireLicenseAcceptance e Versão do Formato) que informam a exigência da aceitação da licença
      • Se a versão do formato do cliente for anterior à 2.0, a operação falhará e solicitará que o usuário atualize o cliente.
      • Se o módulo foi publicado com uma versão de formato mais antiga do que 2.0, o sinalizador requireLicenseAcceptance é ignorado.

Dependências de módulo

  • Durante uma operação Install/Save/Update, se um módulo dependente (outro item depende do módulo) exigir a aceitação da licença, o comportamento de aceitação da licença (acima) será necessário.
  • Se a versão do módulo já estiver listada no catálogo local como instalada no sistema, ignoraremos a verificação da licença.
  • Durante a operação Install/Save/Update, se um módulo dependente exigir uma licença, e a aceitação da licença não ocorrer, a operação falhará e seguirá os processos normais para o pacote que não foi possível instalar/salvar/atualizar.

Impacto sobre -Force

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

EXEMPLOS

Exemplo 1: Atualizar 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

Esse comando atualiza o arquivo de manifesto e define o sinalizador RequireLicenseAcceptance como true.

Exemplo 2: Instalar o Módulo exigindo 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"):

Esse comando mostra a licença do arquivo license.txt e solicita ao usuário a aceitação da licença.

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

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

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

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

O módulo ModuleWithDependency depende do módulo ModuleRequireLicenseAcceptance. O usuário recebe a solicitação para aceitar 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 exigindo a aceitação da licença e -AcceptLicense

O módulo ModuleWithDependency depende do módulo ModuleRequireLicenseAcceptance. O usuário não recebe a solicitação para aceitar a licença, pois AcceptLicense é especificado.

Install-Module -Name ModuleWithDependency -AcceptLicense

Exemplo 7: Instalar o módulo exigindo a aceitação da licença em um cliente mais antigo do que 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: Salvar o Módulo exigindo 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"):

Esse comando mostra a licença do arquivo license.txt e solicita ao usuário a aceitação da licença.

Exemplo 9: Salvar o Módulo exigindo a aceitação da licença com -AcceptLicense

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

O módulo é salvo sem qualquer solicitação de aceitação da licença.

Exemplo 10: Atualizar o Módulo exigindo 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"):

Esse comando mostra a licença do arquivo license.txt e solicita ao usuário a aceitação da licença.

Exemplo 11: Atualizar o Módulo exigindo a aceitação da licença com -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

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

Mais detalhes

Exigir a aceitação da licença para Scripts

Suporte à exigência de aceitação da licença no PowerShellGallery

Exigir a aceitação da licença ao implantar na Automação do Azure