다음을 통해 공유


고유 멤버에 대해

간단한 설명

모든 PowerShell 개체에서 사용할 수 있는 PowerShell의 내장 멤버에 대한 정보를 제공합니다.

자세한 설명

개체를 만들 때 PowerShell은 각 개체에 일부 "숨겨진" 속성과 메서드를 추가합니다. 이러한 속성과 메서드는 내장 멤버로 알려져 있습니다. 이러한 내장 멤버는 일반적으로 보기에서 숨겨집니다. 이러한 숨겨진 멤버는 Force 매개 변수를 사용하여 Get-Member에서 볼 수 있습니다.

객체 보기

내장 멤버에는 개체 보기를 나타내는 MemberSet 속성 집합이 포함됩니다. MemberSet 속성에 대한 자세한 내용은 PSMemberSet참조하세요.

모든 PowerShell 개체에는 다음 속성이 포함됩니다.

  • psbase

    psbase MemberSet 확장 또는 적응 없이 기본 개체의 멤버를 포함합니다. 개체 형식에 따라 [psobject] 인스턴스로 래핑된 .NET 인스턴스이거나 래퍼가 없는 경우 입력 개체 자체입니다.

  • psadapted

    psadapted MemberSet 있는 경우 기본 개체와 조정된 멤버를 표시합니다. 조정된 멤버는 확장 형식 시스템(ETS)에 의해 추가됩니다.

  • psextended

    psextended MemberSetTypes.ps1xml 파일 및 추가 멤버 cmdlet에 의해 추가된 멤버를 표시합니다. Add-Member cmdlet을 사용하여 런타임에 모든 개체를 확장할 수 있습니다.

  • psobject

    psobject MemberSet은 메서드, 속성 및 기타 개체 정보를 포함하여 모든 개체에 대한 풍부한 리플렉션의 원천이 됩니다..

예제

이 예제에서 $hash 사용자에 대한 정보를 포함하는 해시 테이블입니다. Get-MemberForce 매개 변수는 개체의 고유 구성원을 보여줍니다.

$hash = @{
    Age  = 33
    Name = 'Bob'
}

$hash | Get-Member -Force -MemberType MemberSet, CodeProperty
   TypeName: System.Collections.Hashtable

Name        MemberType   Definition
----        ----------   ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=7…
psadapted   MemberSet    psadapted {Item, IsReadOnly, IsFixedSize, IsSynchronized, Keys, Values, SyncRoot, Count, Add,…
psbase      MemberSet    psbase {Item, IsReadOnly, IsFixedSize, IsSynchronized, Keys, Values, SyncRoot, Count, Add, Cl…
psextended  MemberSet    psextended {}
psobject    MemberSet    psobject {Members, Properties, Methods, ImmediateBaseObject, BaseObject, TypeNames, get_Membe…

psobject 사용하는 것은 Get-Member사용하는 것과 유사하지만 더 많은 유연성을 제공합니다. 예를 들어 개체의 속성과 해당 값을 열거할 수 있습니다.

$hash.psobject.Properties | Select-Object Name, MemberType, Value
Name           MemberType                    Value
----           ----------                    -----
IsReadOnly       Property                    False
IsFixedSize      Property                    False
IsSynchronized   Property                    False
Keys             Property              {Age, Name}
Values           Property                {33, Bob}
SyncRoot         Property {[Age, 33], [Name, Bob]}
Count            Property                        2

해시 테이블을 PSCustomObject로 변환하여 생성된 객체와 비교합니다.

$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name   MemberType Value
----   ---------- -----
Age  NoteProperty    33
Name NoteProperty   Bob

해시 테이블의 키가 PSCustomObject속성으로 변환되었습니다. 새 속성은 이제 psextendedMemberSet의 일부입니다.

$user | Get-Member -Force -MemberType MemberSet, CodeProperty
   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=7…
psadapted   MemberSet    psadapted {ToString, GetType, Equals, GetHashCode}
psbase      MemberSet    psbase {ToString, GetType, Equals, GetHashCode}
psextended  MemberSet    psextended {Age, Name}
psobject    MemberSet    psobject {Members, Properties, Methods, ImmediateBaseObject, BaseObject, TypeNames, get_Membe…

유형 정보

pstypenames CodeProperty 상속 순서대로 개체 형식 계층 구조를 나열합니다. 예를 들어:

$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object

출력은 가장 구체화된 개체 형식인 System.IO.FileInfo에서 시작하여 그리고 가장 일반화된 형식인 System.Object로 끝납니다.

방법

PowerShell은 모든 PowerShell 개체에 두 개의 숨겨진 메서드를 추가합니다. 이러한 메서드는 Get-Member -Force 명령 또는 탭 완성을 사용하여 표시되지 않습니다.

ForEach() 및 Where()

ForEach()Where() 메서드는 모든 PowerShell 개체에서 사용할 수 있습니다. 그러나 집합 작업을 할 때 가장 유용합니다. 이러한 메서드를 사용하는 방법에 대한 자세한 내용은 about_Arrays참조하세요.

속성

모든 스칼라 형식에 기본 형식의 Count 또는 Length 속성이 있는 것은 아닙니다. PowerShell은 누락된 속성을 모든 스칼라 형식의 내장 멤버로 추가합니다.

메모

초기화되지 않은 변수는 암시적으로 $null. $null은 스칼라이고, 내장된 개수길이가 0입니다.

CountLength 속성은 비슷하지만 데이터 형식에 따라 다르게 작동할 수 있습니다. 예를 들어, 문자열의 길이 는 문자열에 있는 문자 수를 의미합니다. Count 속성은 개체의 인스턴스 수입니다.

PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1

이러한 속성에 대한 자세한 내용은 about_Properties참조하세요.

배열 인덱싱 스칼라 형식

개체가 인덱싱된 컬렉션이 아닌 경우 인덱스 연산자를 사용하여 첫 번째 요소에 액세스하면 개체 자체가 반환됩니다. 첫 번째 요소 이후의 인덱스 값은 $null을 반환합니다.

PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True

자세한 내용은 about_Operators참조하세요.

형식에 대한 New() 메서드

PowerShell 5.0부터 PowerShell은 모든 .NET 형식에 대한 정적 New() 메서드를 추가합니다. 다음 예제에서는 동일한 결과를 생성합니다.

$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')

new() 메서드를 사용하면 New-Object사용하는 것보다 성능이 좋습니다.

자세한 내용은 about_Classes참조하십시오.