Поделиться через


Модули, требующие принятия лицензии

СИНОПСИС

Юридические отделы некоторых издателей модулей требуют, чтобы клиенты явным образом приняли лицензию перед установкой модуля из коллекции PowerShell. Если пользователь устанавливает, обновляет или сохраняет модуль с помощью PowerShellGet, напрямую или в качестве зависимости для другого пакета, и для этого модуля требуется согласие пользователя с лицензией, пользователь должен указать, что он принимает лицензию, иначе операция завершится ошибкой.

Требования к публикации модулей

Модули, которые требуют от пользователей принятия лицензии, должны соответствовать следующим требованиям:

  • Секция PSData манифеста модуля должна содержать RequireLicenseAcceptance = $True.
  • Модуль должен содержать license.txt файл в корневом каталоге.
  • Манифест модуля должен содержать License Uri.
  • Модуль должен быть опубликован в формате PowerShellGet версии 2.0 и выше.

Влияние на установку/сохранение/Update-Module

  • Командлеты Install/Save/Update поддерживают новый параметр AcceptLicense , который ведет себя так, как будто пользователь увидел лицензию.
  • Если RequiredLicenseAcceptance имеет значение True, а AcceptLicense не указан, пользователю отображается символ license.txt, и ему предлагается указать: Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Если лицензия принята
      • Save-Module: модуль копируется в систему пользователя
      • Install-Module: модуль копируется в систему пользователя в соответствующую папку (в зависимости от области действия)
      • Update-Module: модуль обновлен.
    • Если лицензия отклонена.
      • Операция отменена.
      • Все командлеты проверяют метаданные (requireLicenseAcceptance и Format Version), которые указывают на необходимость принятия лицензии
      • Если версия формата клиента старше 2.0, операция завершается ошибкой и пользователю предлагается обновить клиент.
      • Если модуль был опубликован с версией формата старше 2.0, флаг requireLicenseAcceptance игнорируется.

Зависимости модулей

  • Во время операции установки/сохранения/обновления, если зависимый модуль (что-то другое зависит от модуля) требует принятия лицензии, то требуется поведение принятия лицензии (см. выше).
  • Если версия модуля уже указана в локальном каталоге как установленная в системе, мы обойдем проверку лицензии.
  • Если во время операции установки/сохранения/обновления для зависимого модуля требуется лицензия, а принятие лицензии не происходит, операция завершается ошибкой и выполняется в соответствии с обычными процессами для пакета, который не удалось установить/сохранить/обновить.

Влияние на -Force

Указание –Force НЕДОСТАТОЧНО для принятия лицензии. –AcceptLicense требуется для получения разрешения на установку. Если –Force указано, RequiredLicenseAcceptance имеет значение True и –AcceptLicense НЕ указано, операция завершается ошибкой.

ПРИМЕРЫ

Пример 1: Обновите манифест модуля, чтобы требовать принятия лицензии

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

Эта команда обновляет файл манифеста и устанавливает флаг RequireLicenseAcceptance в значение true.

Пример 2: Установка модуля, требующего принятия лицензии

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

Эта команда показывает лицензию из license.txt файла и предлагает пользователю принять лицензию.

Пример 3: Установка модуля, требующего принятия лицензии, с помощью -AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Модуль устанавливается без запроса на принятие лицензии.

Пример 4: Установка модуля, требующего принятия лицензии, с -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

Пример 5: Установка модуля с зависимостями, требующими принятия лицензии

Модуль ModuleWithDependency зависит от модуля ModuleRequireLicenseAcceptance. Пользователю будет предложено принять лицензию.

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

Пример 6: Установка модуля с зависимостями, требующими принятия и -AcceptLicense

Модуль ModuleWithDependency зависит от модуля ModuleRequireLicenseAcceptance. Пользователю не предлагается принять лицензию, так как указано значение AcceptLicense .

Install-Module -Name ModuleWithDependency -AcceptLicense

Пример 7: Установите модуль, требующий принятия лицензии, на клиент старше 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'.

Пример 8: Модуль сохранения, требующий принятия лицензии

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

Эта команда показывает лицензию из license.txt файла и предлагает пользователю принять лицензию.

Пример 9: Модуль сохранения, требующий принятия лицензии с -AcceptLicense

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

Модуль сохраняется без запроса на принятие лицензии.

Пример 10: Модуль обновления, требующий принятия лицензии

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

Эта команда показывает лицензию из license.txt файла и предлагает пользователю принять лицензию.

Пример 11: Модуль обновления, требующий принятия лицензии с -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

Модуль обновляется без запроса на принятие лицензии.

Дополнительные сведения

Требование принятия лицензии на скрипты

Требуется поддержка по принятию лицензий в PowerShellGallery

Требование принятия лицензии при развертывании в службе автоматизации Azure