내장 멤버 정보

간단한 설명

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

자세한 설명

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

개체 뷰

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

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

  • psbase

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

  • psadapted

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

  • psextended

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

  • psobject

    MemberSetpsobject메서드, 속성 및 개체에 대한 기타 정보를 포함하는 모든 개체에 대한 풍부한 리플렉션 소스입니다.

예제

이 예제에서는 $hash 사용자에 대한 정보를 포함하는 해시 테이블입니다. Force 매개 변수 Get-Member개체의 내장 멤버를 보여 줍니다.

$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속성으로 변환되었습니다. 이제 새 속성이 MemberSetpsextended일부입니다.

$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…

형식 정보

CodePropertypstypenames상속 순서대로 개체 형식 계층 구조를 나열합니다. 예시:

$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()

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

속성

CountLength 속성은 컬렉션뿐만 아니라 모든 PowerShell 개체에서 사용할 수 있습니다. 이는 서로 유사하지만 데이터 형식에 따라 다르게 작동할 수 있습니다. 예를 들어 문자열의 길이 는 문자열의 문자 수입니다. 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 참조하세요.