함수 공급자

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 4.0

공급자 이름

기능

드라이브

함수:

간단한 설명

Windows PowerShell에 정의된 함수에 대한 액세스를 제공합니다.

자세한 설명

Windows PowerShell 함수 공급자를 통해 Windows PowerShell에서 함수 및 필터를 가져오고 추가, 변경 및 삭제할 수 있습니다.

함수는 작업을 수행하는 명명된 코드 블록입니다. 함수 이름을 입력하면 함수 내의 코드가 실행됩니다. 필터는 작업 조건을 설정하는 명명된 코드 블록입니다. Where-Object 명령과 같이 조건 대신 필터 이름을 입력할 수 있습니다.

Function: 드라이브에서는 함수 앞에 "Function"이라는 레이블이 있고 필터 앞에 "Filter"라는 레이블이 있지만 레이블에 관계없이 올바른 컨텍스트에서 사용해야 이러한 함수와 필터가 제대로 작동합니다.

함수 공급자는 함수 및 필터 개체만 포함된 단일 구조 네임스페이스입니다. 함수와 필터에는 둘 다 하위 항목이 없습니다.

각 함수는 System.Management.Automation.FunctionInfo 클래스의 인스턴스이고, 각 필터는 System.Management.Automation.FilterInfo 클래스의 인스턴스입니다.

이 섹션의 예에서는 함수를 관리하는 방법을 보여 줍니다. 이와 동일한 방법으로 필터를 관리할 수 있습니다.

함수 공급자는 Function: 드라이브에 해당 데이터 저장소를 표시합니다. 함수를 사용하기 위해 현재 위치를 Function: 드라이브로 변경할 수 있습니다("set-location function:"). 또는 다른 Windows PowerShell 드라이브에서 작업할 수 있습니다. 다른 위치에서 함수를 참조하려면 경로에 드라이브 이름(Function:)을 사용합니다.

함수 공급자는 Invoke-Item을 제외하고 이름에 Item 명사가 포함된 모든 cmdlet(Item cmdlet)을 지원합니다. 또한 Get-ContentSet-Content cmdlet을 지원합니다. 그러나 이름에 ItemProperty 명사가 포함된 cmdlet(ItemProperty cmdlet)은 지원하지 않으며 모든 cmdlet에서 Filter 매개 변수를 지원하지 않습니다.

함수에 대한 모든 변경 내용은 현재 콘솔에만 영향을 줍니다. 변경 내용을 저장하려면 Windows PowerShell 프로필에 함수를 추가하거나 Export-Console을 사용하여 현재 콘솔을 저장합니다.

기능

ShouldProcess

예제

Function: 드라이브로

-------------------------- 예제 1 --------------------------

현재 위치를 Function: 드라이브로 변경합니다. Windows PowerShell의 모든 드라이브에서 이 명령을 사용할 수 있습니다. 파일 시스템 드라이브로 돌아가려면 드라이브 이름을 입력합니다. 예를 들어 "set-location c:"와 같이 입력하세요.

set-location function:

함수 가져오기

-------------------------- 예제 1 --------------------------

이 명령은 현재 세션의 모든 함수 목록을 가져옵니다. 모든 Windows PowerShell 드라이브에서 이 명령을 사용할 수 있습니다.

get-childitem -path function:

-------------------------- 예제 2 --------------------------

이 명령은 Function: 드라이브에서 "man" 함수를 가져옵니다. 또한 Get-Item cmdlet을 사용하여 함수를 가져옵니다. 파이프라인 연산자(|)는 결과를 Format-Table로 보냅니다.

Wrap 매개 변수는 줄을 벗어나는 텍스트를 다음 줄로 보냅니다. Autosize 매개 변수는 텍스트에 맞게 테이블 열의 크기를 조정합니다.

get-item -path man | format-table -wrap -autosize

다른 드라이브에서 작업하는 경우에는 경로에 드라이브 이름(Function:)을 추가합니다.

-------------------------- 예제 3 --------------------------

이들 명령은 둘 다 "c:"이라는 함수를 가져옵니다. 첫 번째 명령은 모든 드라이브에서 사용할 수 있습니다. 두 번째 명령은 Function: 드라이브에서 사용할 수 있습니다.

이름이 드라이브의 구문인 콜론으로 끝나기 때문에 드라이브 이름으로 경로를 한정해야 합니다. Function: 드라이브 내에서 두 형식 중 하나를 사용할 수 있습니다. 두 번째 명령에서 점(.)은 현재 위치를 나타냅니다.

c:\PS> get-item -path function:c:

PS Function> get-item -path .\c:

함수 만들기

-------------------------- 예제 1 --------------------------

이 명령은 New-Item cmdlet을 사용하여 "HKLM:"이라는 함수를 만듭니다. 괄호로 묶은 식은 함수 이름으로 표시되는 스크립트 블록입니다.

new-item -path function:hklm: -value {set-location hklm:}

Windows PowerShell 명령줄에 함수를 입력하여 함수를 만들 수도 있습니다. 예를 들어 "function:hklm: {set-location hklm:}"을 입력합니다. 현재 위치가 Function: 드라이브인 경우 드라이브 이름을 생략할 수 있습니다. New-Item에서는 "Filter" 레이블을 지정할 수 없으므로 필터에 함수 레이블이 지정되지만 레이블에 관계없이 필터가 제대로 작동합니다. "Filter" 레이블이 있는 필터를 만들려면 명령줄에 필터를 입력합니다. 예를 들어 "filter:Running {$_.Status -eq "Running"}"과 같이 입력하세요.

-------------------------- 예제 2 --------------------------

이 명령은 New-Item cmdlet을 사용하여 Csrss라는 함수를 만듭니다. 이 함수는 Options 동적 매개 변수를 사용하여 함수의 Options 속성 값을 ReadOnly로 지정합니다.

new-item -path function: -name csrss -options readonly -value {get-process csrss}

이 명령은 모든 위치에서 작동합니다. Function: 드라이브에 있는 경우 점(.)을 사용하여 경로를 지정할 수 있습니다. 점은 현재 위치를 나타냅니다.

함수 삭제

-------------------------- 예제 1 --------------------------

이 명령은 현재 세션에서 "hklm:" 함수를 삭제합니다.

remove-item function:hklm:

-------------------------- 예제 2 --------------------------

이 명령은 Options 속성 값이 Constant인 함수를 제외하고 현재 세션에서 모든 함수를 삭제합니다. Force 매개 변수가 없는 경우 Options 속성 값이 ReadOnly인 함수는 삭제되지 않습니다.

remove-item function:* -force

함수를 삭제하면 명령 프롬프트의 내용을 정의하는 프롬프트 함수가 삭제되므로 명령 프롬프트가 변경됩니다.

함수의 속성 및 메서드 표시

-------------------------- 예제 1 --------------------------

이 명령은 Get-Item cmdlet을 사용하여 모든 함수를 가져옵니다. 파이프라인 연산자는 결과를 Get-Member cmdlet으로 보냅니다. 이 cmdlet은 개체의 메서드 및 속성을 표시합니다.

get-item -path function:* | get-member

Function: 드라이브의 함수 컬렉션과 같은 개체 컬렉션을 Get-Member로 파이프하면 Get-Member는 컬렉션의 각 개체를 개별적으로 평가하고 찾은 각 개체 형식에 대한 정보를 반환합니다. 이 경우 모든 개체가 같은 유형이면 단일 개체 형식에 대한 정보를 반환합니다. 이 예에서는 모든 함수가 FunctionInfo 개체입니다. FunctionInfo 개체 컬렉션에 대한 정보를 가져오려면 Get-Member의 InputObject 매개 변수를 사용합니다. 예를 들어 "get-member -InputObject (get-item function:*)"과 같이 입력하세요. InputObject 매개 변수를 사용하는 경우 Get-Member는 컬렉션의 개체가 아니라 컬렉션 자체를 평가합니다.

-------------------------- 예제 2 --------------------------

이 명령은 "prompt" 함수의 속성 값을 나열합니다. 또한 Get-Item cmdlet을 사용하여 "prompt" 함수를 나타내는 개체를 가져옵니다. 파이프라인 연산자(|)는 결과를 Format-List 명령으로 보냅니다. Format-List 명령은 와일드카드 문자(*)와 함께 Property 매개 변수를 사용하여 "prompt" 함수의 모든 속성 값을 표시하고 형식을 지정합니다.

get-item function:prompt | format-list -property *

함수의 속성 변경

-------------------------- 예제 1 --------------------------

Set-Item cmdlet을 Options 동적 매개 변수와 함께 사용하여 함수의 Options 속성 값을 변경할 수 있습니다.

이 명령은 "prompt" 함수에 대한 AllScope 및 ReadOnly 옵션을 설정합니다. 또한 Set-Item cmdlet의 Options 동적 매개 변수를 사용합니다. Options 매개 변수는 별칭 또는 함수 공급자와 함께 사용하는 경우에만 Set-Item에서 사용할 수 있습니다.

set-item -path function:prompt -options "AllScope,ReadOnly"

-------------------------- 예제 2 --------------------------

이 명령은 Set-Item cmdlet을 사용하여 경로 앞에 시간을 표시하도록 "prompt" 함수를 변경합니다.

set-item -path function:prompt -value {'PS '+ $(Get-Date -format t) + " " + $(Get-Location) + '> '}

변경 내용은 FunctionInfo 개체의 Definition 및 ScriptBlock 속성에 모두 영향을 줍니다. 변경 내용의 결과를 보려면 "get-item -path function:prompt | format-list -property *"를 입력하세요.

-------------------------- 예제 3 --------------------------

이 명령은 Rename-Item cmdlet을 사용하여 "help"에서 "gh"로 함수 이름을 변경합니다.

rename-item -path function:help -newname gh

함수 복사

-------------------------- 예제 1 --------------------------

이 명령은 "prompt" 함수를 "oldPrompt"로 복사하여 프롬프트 함수와 연결된 스크립트 블록의 새 이름을 쉽게 만들 수 있도록 합니다. 프롬프트 함수를 변경하려는 경우 이 명령을 사용하여 원래 프롬프트 함수를 저장할 수 있습니다.

새 함수의 Options 속성 값은 None입니다. Options 속성 값을 변경하려면 Set-Item을 사용합니다.

copy-item -path function:prompt -destination function:oldPrompt

동적 매개 변수

동적 매개 변수는 Windows PowerShell 공급자가 추가하고 이 공급자가 사용할 수 있는 드라이브에서 cmdlet을 사용하는 경우에만 사용할 수 있는 cmdlet 매개 변수입니다.

Options <System.Management.Automation.ScopedItemOptions>

함수의 Options 속성 값을 결정합니다.

설명

없음

옵션이 없습니다. "None"이 기본값입니다.

상수

함수가 삭제되지 않고 해당 속성도 변경되지 않습니다. Constant는 함수를 만드는 동안에만 사용할 수 있습니다. 기존 함수의 옵션을 Constant로 변경할 수 없습니다.

개인

현재 범위에서만 함수를 볼 수 있고 하위 범위에서는 볼 수 없습니다.

ReadOnly

Force 매개 변수를 사용하지 않으면 함수의 속성을 변경할 수 없습니다. Remove-Item을 사용하여 함수를 삭제할 수 있습니다.

AllScope

함수를 새로 만든 범위로 복사합니다.

지원되는 cmdlet:

See Also

Other Resources

about_Functions
about_Providers