PSCustomObject

blimeyoops·2023년 7월 19일
0

powershell

목록 보기
7/8

PSCustomObject(사용자 지정 개체)를 사용하면 구조화된 데이터를 만들수 있다.

PSCustomObject 생성

PowerShell에서 HashTable은 키/값을 가진 컬렉션이다. 이 HashTable 생성 후 출력하면 Name과 Value가 컬럼의 헤더로 출력된다.

## HashTable
$obj = @{
    FirstName     = 'Lionel'
    LastName = 'Messi'
}

$obj

## Output
## Name                           Value
## ----                           -----
## LastName                       Messi
## FirstName                      Lionel

HashTable을 이용해 PSCustomObject를 만드는 방법은 다음과 같다.

## HashTable to PSCustomObject
$hash = @{
    FirstName     = 'Lionel'
    LastName = 'Messi'
}

$obj = New-Object -TypeName PSObject -Property $hash
$obj = [PSCustomObject]$hash


## Output
## LastName FirstName
## -------- ---------
## Messi    Lionel

위 PSCustomObject를 출력하면 HashTable과 결과가 다르게 출력되고 Name과 Value라는 컬럼이 없고 키가 컬럼의 헤더로 출력된다.

HashTable의 선언돠 동시에 PSCustomObject를 생성할 수도 있다.

## PSCustomObject
$obj = [PSCustomObject]@{
    FirstName     = 'Lionel'
    LastName = 'Messi'
}

PSCustomObject 접근

HashTable에서 값에 접근하기 위해서는 키를 제공한다. 하지만 PSCustomObject는 일반 개체처럼 속성에 액세스하고 값을 가지고 오고 속성 이름에는 문자열도 사용할 수 있다.

## PSCustomObject
$obj = [PSCustomObject]@{
    FirstName     = 'Lionel'
    LastName = 'Messi'
}

## PSCustomObject access
$obj.FirstName
$obj.'FirstName'

PSCustomObject 속성 추가 및 제거

Add-Member를 사용하여 PSCustomObject에 새 속성을 추가할 수 있다.

## PSCustomObject
$obj = [PSCustomObject]@{
    FirstName     = 'Lionel'
    LastName = 'Messi'
}

## PSCustomObject에 새 속성 추가
$obj | Add-Member -MemberType NoteProperty -Name 'Country' -Value 'Argentina'

PowerShell 개체에서 사용할 수 있는 PowerShell의 내장 멤버인 .psobject를 사용해 개체의 속성을 제거할 수 있다.

$obj.psobject.Properties.Remove('Country')

PSCustomObject 이름 열거

개체에 모든 속성 이름 목록을 가져올 수 있다.

## List property name
$obj | Get-Member -MemberType NoteProperty | Select -ExpandProperty Name

$obj.psobject.Properties.name

참고

PSCustomObject에 대해 알고 싶은 모든 것

0개의 댓글