Модули, для использования которых требуется принять условия лицензии

Краткий обзор

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

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

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

  • В разделе PSData манифеста модуля для параметра RequireLicenseAcceptance должно быть установлено значение $True.
  • В корневом каталоге модуля должен содержаться файл license.txt.
  • Манифест модуля должен содержать URI лицензии.
  • Модуль должен быть опубликован в формате PowerShellGet 2.0 или более поздней версии.

Влияние на командлеты Install/Save/Update-Module

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

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

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

Запрос на принятие условий лицензии для скриптов

Поддержка запроса на принятие условий лицензионного соглашения в коллекции PowerShell

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