내장 멤버 정보
간단한 설명
모든 PowerShell 개체에서 사용할 수 있는 PowerShell의 내장 멤버에 대한 정보를 제공합니다.
자세한 설명
개체를 만들 때 PowerShell은 각 개체에 일부 "숨겨진" 속성과 메서드를 추가합니다. 이러한 속성 및 메서드를 내장 멤버라고 합니다. 이러한 내장 멤버는 일반적으로 보기에서 숨겨집니다. 이러한 숨겨진 멤버는 Get-Member의 Force 매개 변수를 사용하여 볼 수 있습니다.
개체 뷰
내장 멤버에는 개체의 뷰를 나타내는 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
MemberSet은
psobject
메서드, 속성 및 개체에 대한 기타 정보를 포함하는 모든 개체에 대한 풍부한 리플렉션 소스입니다.
예제
이 예제에서는 $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의 속성으로 변환되었습니다. 이제 새 속성이 MemberSet의 psextended
일부입니다.
$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…
형식 정보
CodeProperty는 pstypenames
상속 순서대로 개체 형식 계층 구조를 나열합니다. 예시:
$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 참조하세요.
속성
Count 및 Length 속성은 컬렉션뿐만 아니라 모든 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 참조하세요.
PowerShell