라이선스 동의가 필요한 모듈Modules Requiring License Acceptance

요약SYNOPSIS

일부 모듈 게시자의 법률 부서에서는 고객이 PowerShell 갤러리에서 모듈을 설치하기 전에 명시적으로 라이선스에 동의하도록 요구합니다.Legal departments for some module publishers require that customers must explicitly accept the license before installing their module from PowerShell Gallery. 사용자가 직접 또는 다른 패키지에 대한 종속성을 통해 PowerShellGet을 사용하여 모듈을 설치, 업데이트 또는 저장할 때 해당 모듈에서 사용자가 라이선스에 동의할 것을 요구하는 경우 사용자는 라이선스에 동의해야 합니다. 동의하지 않으면 작업에 실패합니다.If a user installs, updates, or saves a module using PowerShellGet, whether directly or as a dependency for another package, and that module requires the user to agree to a license, the user must indicate they accept the license or the operation fails.

모듈에 요구 사항 게시Publish Requirements for Modules

사용자에게 라이선스 동의를 요구하는 모듈은 다음 요구 사항을 충족해야 합니다.Modules that would like to require users to accept license should fulfill following requirements:

  • 모듈 매니페스트의 PSData 섹션에 RequireLicenseAcceptance = $True가 포함되어야 합니다.PSData section of module manifest should include RequireLicenseAcceptance = $True.
  • 모듈의 루트 디렉터리에 license.txt 파일이 포함되어야 합니다.Module should contain license.txt file in root directory.
  • 모듈 매니페스트에 라이선스 URI가 포함되어야 합니다.Module manifest should contain License Uri.
  • 모듈은 PowerShellGet 형식 버전 2.0 이상으로 게시되어야 합니다.Module should be published with PowerShellGet Format Version 2.0 and above.

Install/Save/Update-Module에 미치는 영향Impact on Install/Save/Update-Module

  • Install/Save/Update cmdlet은 사용자가 라이선스를 확인한 것처럼 동작하는 새 매개 변수 –AcceptLicense를 지원합니다.Install/Save/Update cmdlets will support a new parameter –AcceptLicense that will behave as though the user saw the license.
  • RequiredLicenseAcceptance가 True이고 –AcceptLicense가 지정되지 않은 경우 사용자에게 license.txt가 표시되고 "Do you accept these license terms (Yes/No/YesToAll/NoToAll)"(이 라이선스 조건에 동의하시나요(예/아니요/모두 예/모두 아니요))가 표시됩니다.If RequiredLicenseAcceptance is True and –AcceptLicense is not specified, the user will be shown the license.txt, and prompted with: "Do you accept these license terms (Yes/No/YesToAll/NoToAll)".
    • 라이선스에 동의하는 경우If the license is accepted
      • Save-Module: 모듈이 사용자의 시스템에 복사됩니다.Save-Module: the module will be copied to the user's system
      • Install-Module: 모듈이 사용자의 시스템에서 적절한 폴더(범위 기준)에 복사됩니다.Install-Module: the module will be copied to the user's system to the proper folder (based on scope)
      • Update-Module: 모듈이 업데이트됩니다.Update-Module: the module will be updated.
    • 라이선스에 동의하지 않는 경우If the license is declined.
      • 작업이 취소됩니다.Operation will be cancelled.
      • 모든 cmdlet은 라이선스 동의가 필요한 메타데이터(requireLicenseAcceptance 및 형식 버전)를 확인합니다.All cmdlets will check for the metadata(requireLicenseAcceptance and Format Version) that says a license acceptance is required
      • 클라이언트의 형식 버전이 2.0보다 이전 버전인 경우 작업에 실패하고 사용자에게 클라이언트를 업데이트하도록 요청합니다.If format version of client is older than 2.0, operation will fail and ask the user to update the client.
      • 모듈이 2.0보다 이전인 형식 버전으로 게시된 경우 requireLicenseAcceptance 플래그가 무시됩니다.If module was published with format version older than 2.0, requireLicenseAcceptance flag will be ignored.

모듈 종속성Module Dependencies

  • 설치/저장/업데이트 작업 중 종속 모듈(모듈에 종속되는 작업)에 라이선스 동의가 필요한 경우 라이선스 동의 동작(위)이 필요합니다.During Install/Save/Update operation, if a dependent module(something else depends on the module) requires license acceptance, then the license acceptance behavior (above) will be required.
  • 시스템에 설치되면서 모듈 버전이 로컬 카탈로그에 이미 나열되어 있는 경우 라이선스 확인을 무시합니다.If the module version is already listed in the local catalog as being installed on the system, we would bypass the license checking.
  • 설치/저장/업데이트 작업 중 종속 모듈에 라이선스가 필요한데 사용자가 라이선스에 동의하지 않은 경우, 작업에 실패하고 패키지 설치/저장/업데이트 실패에 대한 일반적인 프로세스가 진행됩니다.During Install/Save/Update operation, if a dependent module requires a license, and the license acceptance does not occur, the operation will fail and follow normal processes for the package failed to install/save/update.

-Force에 대한 영향Impact on -Force

–Force를 지정하여 라이선스에 동의할 수 없습니다.Specifying –Force is NOT sufficient to accept a license. 설치 권한에 대해 –AcceptLicense가 필요합니다.–AcceptLicense is required for permission to install. –Force가 지정되고 RequiredLicenseAcceptance가 True이고 –AcceptLicense가 지정되지 않으면 작업에 실패합니다.If –Force is specified, RequiredLicenseAcceptance is True, and –AcceptLicense is NOT specified, the operation will fail.

예제EXAMPLES

예제 1: 모듈 매니페스트를 업데이트하여 라이선스 동의 요구Example 1: Update Module Manifest to require license acceptance

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로 설정합니다.This command updates the manifest file and sets the RequireLicenseAcceptance flag to true.

예제 2: 라이선스 동의가 필요한 모듈 설치Example 2: Install Module requiring license acceptance

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 파일의 라이선스를 표시하고 사용자에게 라이선스에 동의하라는 메시지를 표시합니다.This command shows the license from license.txt file and prompts the user to accept the license.

예제 3: -AcceptLicense로 라이선스 동의가 필요한 모듈 설치Example 3: Install Module requiring license acceptance with -AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

라이선스에 동의하라는 메시지가 표시되지 않고 모듈이 설치됩니다.Module is installed without any prompt to accept license.

예제 4: -Force로 라이선스 동의가 필요한 모듈 설치Example 4: Install Module requiring license acceptance with -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: 라이선스 동의가 필요한 종속성이 있는 모듈 설치Example 5: Install Module with dependencies requiring license acceptance

모듈 ‘ModuleWithDependency’는 모듈 'ModuleRequireLicenseAcceptance'에 종속됩니다.Module 'ModuleWithDependency' depends on module 'ModuleRequireLicenseAcceptance'. 사용자에게 라이선스에 동의하라는 메시지가 표시됩니다.User is prompted to Accept License.

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가 필요한 종속성이 있는 모듈 설치Example 6: Install Module with dependencies requiring license acceptance and -AcceptLicense

모듈 ‘ModuleWithDependency’는 모듈 'ModuleRequireLicenseAcceptance'에 종속됩니다.Module 'ModuleWithDependency' depends on module 'ModuleRequireLicenseAcceptance'. -AcceptLicense가 지정되면 사용자에게 라이선스에 동의하라는 메시지가 표시되지 않습니다.User is not prompted to accept license as -AcceptLicense is specified.

Install-Module -Name ModuleWithDependency -AcceptLicense

예제 7: PSGetFormatVersion 2.0 이전의 클라이언트에서 라이선스 동의가 필요한 모듈 설치Example 7: Install module requiring license acceptance on a client older than 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: 라이선스 동의가 필요한 모듈 저장Example 8: Save Module requiring license acceptance

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 파일의 라이선스를 표시하고 사용자에게 라이선스에 동의하라는 메시지를 표시합니다.This command shows the license from license.txt file and prompts the user to accept the license.

예제 9: -AcceptLicense로 라이선스 동의가 필요한 모듈 저장Example 9: Save Module requiring license acceptance with -AcceptLicense

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

라이선스에 동의하라는 메시지가 표시되지 않고 모듈이 저장됩니다.Module is saved without any prompt to accept license.

예제 10: 라이선스 동의가 필요한 모듈 업데이트Example 10: Update Module requiring license acceptance

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 파일의 라이선스를 표시하고 사용자에게 라이선스에 동의하라는 메시지를 표시합니다.This command shows the license from license.txt file and prompts the user to accept the license.

예제 11: -AcceptLicense로 라이선스 동의가 필요한 모듈 업데이트Example 11: Update Module requiring license acceptance with -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

라이선스에 동의하라는 메시지가 표시되지 않고 모듈이 업데이트됩니다.Module is updated without any prompt to accept license.

자세한 내용More details

스크립트에 대한 라이선스 동의 필요Require License Acceptance for Scripts

PowerShellGallery에서 라이선스 동의 지원 필요Require License Acceptance support on PowerShellGallery

Azure Automation에 배포에 대한 라이선스 동의 필요Require License Acceptance on Deploy to Azure Automation