2019年3月2日土曜日

カスタムオブジェクト配列の作成と表示

カスタムオブジェクト配列の作成例
Powershellでのカスタムオブジェクトの作成例です。
ネットワーク機器のコンフィグファイルを読み込んで一覧化したりするのに超便利です。
オブジェクトからCSV化、CSVからオブジェクト化(全部文字列になるが…)できて便利です。

# オブジェクト配列化①
# 表の元ネタ
$InterfaceList = @( 'Port1','Port2','Port3' )   # 文字列配列
$IPAddressList = @( '192.168.0.1','192.168.255.1','172.16.255.1' )   # 文字列配列
$NetMaskList   = @( 30,24,24 )   # 数値配列
# オブジェクト化
$Array = New-Object System.Collections.ArrayList    # 配列リストの初期化
foreach ( $i in 0..($InterfaceList.Length -1) ) {   # $InterfaceListのループ
    $Object = [PSCustomObject] @{
        No = $i +1
        Interface = $InterfaceList[$i]
        IPAddress = $IPAddressList[$i]
        NetMask   = $NetMaskList[$i]
    }                       # オブジェクト化
    $Array.Add( $Object )   # オブジェクトの配列追加
}
$List = $Array.ToArray()    # 普通のオブジェクト配列に
$List.Length                # 配列長
$List                       # オブジェクト配列の表示
# CSV化
$CSV = $List | ConvertTo-Csv
$CSV.Length
$CSV


# オブジェクト配列化②
# 表の元ネタ
$InterfaceList = @( 'Port1','Port2','Port3' )   # 文字列配列
$IPAddressList = @( '192.168.0.1','192.168.255.1','172.16.255.1' )   # 文字列配列
$NetMaskList   = @( 30,24,24 )   # 数値配列
# オブジェクト化
$List = @()    # 配列リストの初期化
foreach ( $i in 0..($InterfaceList.Length -1) ) {   # $InterfaceListのループ
    $List += [PSCustomObject] @{
        No = $i +1
        Interface = $InterfaceList[$i]
        IPAddress = $IPAddressList[$i]
        NetMask   = $NetMaskList[$i]
    }                       # オブジェクト化
}
$List.Length                # 配列長
$List  
# CSV化
$CSV = $List | ConvertTo-Csv
$CSV.Length
$CSV


# オブジェクト配列化②改
# 表の元ネタ
$InterfaceList = @( 'Port1','Port2','Port3' )   # 文字列配列
$IPAddressList = @( '192.168.0.1','192.168.255.1','172.16.255.1' )   # 文字列配列
$NetMaskList   = @( 30,24,24 )   # 数値配列
# オブジェクト化
$List = @()    # 配列リストの初期化
$List += foreach ( $i in 0..($InterfaceList.Length -1) ) {   # $InterfaceListのループ
    [PSCustomObject] @{
        No = $i +1
        Interface = $InterfaceList[$i]
        IPAddress = $IPAddressList[$i]
        NetMask   = $NetMaskList[$i]
    }                       # オブジェクト化
}
$List.Length                # 配列長
$List  
# CSV化
$CSV = $List | ConvertTo-Csv
$CSV.Length
$CSV



#CSVデータからのオブジェクト配列化
## 元CSVデータの作成
$CSVData = @()
$CSVData += 'No,Interface,IPAddress,NetMask'
$CSVData += '1,Port1,192.168.0.1,30'
$CSVData += '2,Port2,192.168.255.1,24'
$CSVData += '3,Port3,172.16.255.1,24'
## CSVデータのオブジェクト配列化
$List = $CSVData | ConvertFrom-Csv
$List.Length
$List


1 件のコメント:

  1. Play at a Casino at DrmCD
    Casino games are fun and fun! We're happy to 계룡 출장안마 have your experience 제천 출장안마 at 시흥 출장샵 a top-rated gaming 문경 출장안마 destination. the most 광양 출장안마 immersive casino experience you'll find in a decade.

    返信削除