みなさんこんにちは!ヒロポンです!
Excelマクロ(VBA)で、業務のちょっとした集計や一括処理を回してきた。そういう業務SE、めっちゃ多いですよね。俺もそうでした。
で、それを PowerShell に移そうとすると、最初の壁が配列とハッシュテーブル。Dim arr() As String のノリで書くと、まず動かない。あれ、なんで動かへん??ってなるやつ。powershell 配列 ハッシュテーブル で検索してつまずくのは、だいたいここの構造差なんですよね。
先に結論を言っときます。@()(配列)と @{}(ハッシュテーブル)の2つさえ覚えれば、業務スクリプトはだいたい動く。これだけ。
この記事は、前に書いたVBA → C# 翻訳チートシートの PowerShell 版です。VBA で知ってる書き方を、PowerShell に翻訳していく。コードは Docker 上の PowerShell で実機確認済み。Windows PowerShell 5.1 でも 7 でも同じ挙動でした。
忙しい人向けに最初にまとめ
- 配列は
@()— VBA のDim arr(2) As Stringのような固定長宣言は不要。可変長で、追加は$arr += x。インデックスは VBA と同じ 0 始まり。 - 連想配列は
@{}— VBA のScripting.Dictionary相当。参照設定なしで@{ "key" = value }と書くだけ。 - ループは
ForEach-Objectかforeach— VBA のFor Each相当。PowerShell はパイプライン(|)で流す発想が加わる。
この記事の位置づけ



