Requires에 대한 정보

간단한 설명

필요한 요소 없이 스크립트가 실행되지 않도록 합니다.

긴 설명

#Requires 문은 PowerShell 버전, 모듈(및 버전) 또는 스냅인(및 버전) 및 버전 필수 구성 요소가 충족되지 않는 한 스크립트가 실행되지 않도록 합니다. 필수 구성 요소가 충족되지 않으면 PowerShell에서 스크립트를 실행하지 않습니다.

문법

#Requires -Version <N>[.<n>]
#Requires -PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#Requires -ShellId <ShellId> -PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
#Requires -RunAsAdministrator

구문에 대한 자세한 내용은 ScriptRequirements참조하세요.

사용 규칙

스크립트에는 둘 이상의 #Requires 구문이 포함될 수 있습니다. #Requires 문장은 스크립트의 모든 줄에 나타날 수 있습니다.

함수 내부에 명령문을 #Requires 배치하는 것은 범위를 제한하지 않습니다. 모든 #Requires 문은 스크립트를 실행하기 전에 항상 전역적으로 적용되며 충족되어야 합니다.

경고

명령문은 #Requires 스크립트의 모든 줄에 나타날 수 있지만 스크립트에서의 위치는 해당 애플리케이션의 순서에 영향을 주지 않습니다. 스크립트를 실행하기 전에 #Requires 문이 제시하는 전역 상태를 반드시 충족해야 합니다.

예제:

Get-Module AzureRM.Netcore | Remove-Module
#Requires -Modules AzureRM.Netcore

#Requires 문 앞에 필요한 모듈이 제거되었기 때문에 위의 코드를 실행해서는 안 된다고 생각할 수 있습니다. 그러나 스크립트를 실행하기 전에 #Requires 상태를 충족해야 했습니다. 그런 다음 스크립트의 첫 번째 줄이 필요한 상태를 무효화했습니다.

매개 변수

-어셈블리 <어셈블리 경로> | <.NET 어셈블리 사양>

중요합니다

-Assembly 구문은 더 이상 사용되지 않습니다. 아무 기능도 하지 않습니다. 구문이 PowerShell 5.1에 추가되었지만 지원 코드는 구현되지 않았습니다. 구문은 이전 버전과의 호환성을 위해 계속 허용됩니다.

어셈블리 DLL 파일 또는 .NET 어셈블리 이름의 경로를 지정합니다. 어셈블리 매개 변수는 PowerShell 5.0에서 도입되었습니다. .NET 어셈블리에 대한 자세한 내용은 어셈블리 이름참조하세요.

다음은 그 예입니다.

#Requires -Assembly path\to\foo.dll
#Requires -Assembly "System.Management.Automation, Version=3.0.0.0,
  Culture=neutral, PublicKeyToken=31bf3856ad364e35"

-버전 <N>[.<n>]

스크립트에 필요한 PowerShell의 최소 버전을 지정합니다. 주 버전 번호 및 선택적 부 버전 번호를 입력합니다.

다음은 그 예입니다.

#Requires -Version 6.0

-PSSnapin <PSSnapin-name> [-Version <N>[.<n>]]

스크립트에 필요한 PowerShell 스냅인을 지정합니다. 스냅인 이름과 선택적 버전 번호를 입력합니다.

다음은 그 예입니다.

#Requires -PSSnapin DiskSnapin -Version 1.2

-Modules <Module-Name> | <해시 테이블>

스크립트에 필요한 PowerShell 모듈을 지정합니다. 모듈 이름 및 선택적 버전 번호를 입력합니다.

필요한 모듈이 현재 세션에 없으면 PowerShell에서 모듈을 가져옵니다. 모듈을 가져올 수 없는 경우 PowerShell은 종료 오류를 throw합니다.

각 모듈에 대해 모듈 이름(<String>) 또는 해시 테이블을 입력합니다. 값은 문자열과 해시 테이블의 조합일 수 있습니다. 해시 테이블에는 다음과 같은 키가 있습니다.

  • ModuleName - 필수 모듈 이름을 지정합니다.
  • GUID - 선택적 모듈의 GUID를 지정합니다.
  • 또한 아래 세 가지 키 중 하나를 지정해야 합니다 . 이러한 키는 함께 사용할 수 없습니다.
    • ModuleVersion - 모듈의 허용 가능한 최소 버전을 지정합니다.
    • RequiredVersion - 모듈의 정확한 필수 버전을 지정합니다.
    • MaximumVersion - 모듈의 허용되는 최대 버전을 지정합니다.

비고

RequiredVersion Windows PowerShell 5.0에 추가되었습니다. MaximumVersion Windows PowerShell 5.1에 추가되었습니다.

다음은 그 예입니다.

AzureRM.Netcore(버전 0.12.0 이상)가 설치되어 있어야 합니다.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; ModuleVersion="0.12.0" }

AzureRM.Netcore( 버전 0.12.0)이 설치되어야 합니다.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12.0" }

AzureRM.Netcore(버전 0.12.0 이하)가 설치되어 있어야 합니다.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; MaximumVersion="0.12.0" }

AzureRM.NetcorePowerShellGet의 어느 버전이라도 설치되어야 합니다.

#Requires -Modules AzureRM.Netcore, PowerShellGet

RequiredVersion 키를 사용하는 경우 버전 문자열이 필요한 버전 문자열과 정확히 일치하는지 확인합니다.

Get-Module AzureRM.Netcore -ListAvailable
    Directory: /home/azureuser/.local/share/powershell/Modules

ModuleType Version Name            PSEdition ExportedCommands
---------- ------- ----            --------- ----------------
Script     0.12.0  AzureRM.Netcore Core

0.120.12.0정확히 일치하지 않으므로 다음 예제는 실패합니다.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12" }

-PSEdition <PSEdition 이름>

스크립트에 필요한 PowerShell 버전을 지정합니다. 유효한 값은 PowerShell용 Core 및 Windows PowerShell용 Desktop입니다.

다음은 그 예입니다.

#Requires -PSEdition Core

-셸 ID

스크립트에 필요한 셸을 지정합니다. 셸 ID를 입력합니다. ShellId 매개 변수를 사용하는 경우 PSSnapin 매개 변수도 포함해야 합니다. 자동 변수를 쿼리하여 현재 ShellId$ShellId 찾을 수 있습니다.

다음은 그 예입니다.

#Requires -ShellId MyLocalShell -PSSnapin Microsoft.PowerShell.Core

비고

이 매개 변수는 사용되지 않는 미니 셸에서 사용하기 위한 것입니다.

-관리자 권한으로 실행

이 switch 매개 변수가 #Requires 문에 추가되면 스크립트를 실행하는 PowerShell 세션을 관리자 권한으로 시작해야 한다고 지정합니다. RunAsAdministrator 매개 변수는 Windows가 아닌 운영 체제에서 무시됩니다. RunAsAdministrator 매개 변수는 PowerShell 4.0에서 도입되었습니다.

다음은 그 예입니다.

#Requires -RunAsAdministrator

예시

다음 스크립트에는 두 개의 #Requires 문이 있습니다. 두 문에 지정된 요구 사항이 충족되지 않으면 스크립트가 실행되지 않습니다. 각 #Requires 문은 줄의 첫 번째 항목이어야 합니다.

#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0
Param
(
    [parameter(Mandatory=$true)]
    [String[]]
    $Path
)
...

참고하십시오