xlogI125’s blog

パソコン作業を効率化したい

PowerShell練習 .psobject.Properties.Name

メモ

  • CSVの操作ではなく、PSCustomObjectの配列をどう扱うか

使い捨てスクリプト

  • ConvertTo-Csv に続けて ConvertFrom-Csv を実行した後の内容を見る
# PowerShell 5.1, Windows 10
Set-StrictMode -Version Latest

# 適当なフォルダを選択
Set-Location -Path "${env:USERPROFILE}\Desktop\tmp123"

$a = Get-ChildItem | Select-Object -Property Name, LastWriteTime | 
ConvertTo-Csv -NoTypeInformation | ConvertFrom-Csv

$a | Set-Clipboard

# クリップボードの内容例
# @{Name=ファイル1.txt; LastWriteTime=2020/01/01 00:00:00}
# @{Name=ファイル2.txt; LastWriteTime=2020/01/02 00:00:00}
  • PSCustomObject の配列を作成して ConvertTo-Csv と ConvertFrom-Csv を実行した後の内容を見る
# PowerShell 5.1, Windows 10
Set-StrictMode -Version Latest

$row1 = [PSCustomObject]@{colA = "名前1.txt"; colB = "2020/1/2 03:04:05" }
$row2 = [PSCustomObject]@{colA = "名前2.txt"; colB = "2020/6/7 08:09:10" }
$row3 = [PSCustomObject]@{colA = "名前3.txt"; colB = "2020/11/12 13:14:15" }
$a = @($row1, $row2, $row3)

$b = $a | ConvertTo-Csv -NoTypeInformation 
$b | Set-Clipboard

# クリップボードの内容
# "colA","colB"
# "名前1.txt","2020/1/2 03:04:05"
# "名前2.txt","2020/6/7 08:09:10"
# "名前3.txt","2020/11/12 13:14:15"

$c = $b | ConvertFrom-Csv
$c | Set-Clipboard

# クリップボードの内容
# @{colA=名前1.txt; colB=2020/1/2 03:04:05}
# @{colA=名前2.txt; colB=2020/6/7 08:09:10}
# @{colA=名前3.txt; colB=2020/11/12 13:14:15}

Write-Host $c[2].psobject.Properties.Name[0] #=> colA
Write-Host $c[2].psobject.Properties.Name[1] #=> colB
Write-Host $c[2].psobject.Properties.Value[0] #=> 名前3.txt
Write-Host $c[2].psobject.Properties.Value[1] #=> 2020/11/12 13:14:15

$c[0].($c[0].psobject.Properties.Name[0]) = "ファイル1.txt"
$c[0].($c[0].psobject.Properties.Name[1]) = "令和2年1月2日"
$c[1].($c[1].psobject.Properties.Name[0]) = "ファイル2.txt"
$c[1].($c[1].psobject.Properties.Name[1]) = "令和2年6月7日"
$c[2].($c[2].psobject.Properties.Name[0]) = "ファイル3.txt"
$c[2].($c[2].psobject.Properties.Name[1]) = "令和2年11月12日"

$d = $c | ConvertTo-Csv -NoTypeInformation
$d | Set-Clipboard

# クリップボードの内容
# "colA","colB"
# "ファイル1.txt","令和2年1月2日"
# "ファイル2.txt","令和2年6月7日"
# "ファイル3.txt","令和2年11月12日"