2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowershellのテーブルデータをMarkdown形式で出力する

Posted at

はじめに

image.png

Markdownは技術記事やドキュメントでよく利用される軽量マークアップ言語です。
シンプルで書きやすい一方で、テーブルやリストを手作業で整形するのは意外と手間がかかります。

そこで今回は、PowerShellを使ってテーブルデータのMarkdownファイルを自動生成・編集する方法をまとめました。Windowsの環境情報やシステム情報など、PowerShellで取得できる内容をMarkdownに整理しておくと便利だと思い、備忘録として残しています。

基本の考え方

markdown-basic-concept.png

Markdownはテキストファイルとして扱えるため、PowerShellでは Get-Content や Set-Content、Add-Content を使って簡単に編集できます。さらに、配列やオブジェクトをループ処理することで、リストやテーブルをMarkdown形式に自動生成することも可能です。外部ツールを使わなくても、PowerShell単体で十分に活用できる点が大きな魅力です。

基本サンプル:配列からMarkdownテーブルを生成

# データ定義
$data = @(
    @{Name="Item1"; Value=100},
    @{Name="Item2"; Value=200}
)

# テーブルのヘッダ行
$table = @()
$table += "| Name | Value |"
$table += "|------|-------|"

# データをMarkdown形式に変換
foreach ($row in $data) {
    $table += "| $($row.Name) | $($row.Value) |"
}

# ファイルに出力(UTF-8)
$table | Set-Content .\table.md -Encoding utf8

出力結果(table.md):

| Name | Value |
|------|-------|
| Item1 | 100  |
| Item2 | 200  |

image.png

QiitaやGitHubのプレビューに貼り付けると、整った表になります。


応用例1:CSVからMarkdownテーブルへ

CSVファイルをそのままMarkdown表に変換できます。

$data = Import-Csv .\data.csv
$table = @()
$table += "| " + ($data[0].PsObject.Properties.Name -join " | ") + " |"
$table += "| " + (($data[0].PsObject.Properties.Name | ForEach-Object { "----" }) -join " | ") + " |"

foreach ($row in $data) {
    $line = ($row.PSObject.Properties.Value -join " | ")
    $table += "| $line |"
}

$table | Set-Content .\csv_table.md -Encoding utf8

これで既存データをドキュメント化できます。


応用例2:リストの自動生成

単純な配列をMarkdownリストに変換する例。

$items = "Apple","Banana","Cherry"
$items | ForEach-Object { "- $_" } | Set-Content .\list.md -Encoding utf8

出力:

- Apple
- Banana
- Cherry

応用例3:システム情報をMarkdownに出力

環境情報をそのまま表にすることで、ドキュメント作成や共有に便利です。

Get-ComputerInfo |
  Select-Object OsName, OsArchitecture, CsSystemType, CsManufacturer, CsModel |
  ForEach-Object {
@"
| 項目         | 値 |
|--------------|----|
| OS名         | $($_.OsName) |
| アーキテクチャ | $($_.OsArchitecture) |
| システム種別 | $($_.CsSystemType) |
| メーカー     | $($_.CsManufacturer) |
| モデル       | $($_.CsModel) |
"@
  } | Set-Content .\systeminfo.md -Encoding utf8

出力例:

| 項目         | 値                          |
|--------------|-----------------------------|
| OS名         | Microsoft Windows 11 Pro    |
| アーキテクチャ | 64-bit                     |
| システム種別 | x64-based PC                |
| メーカー     | Lenovo                      |
| モデル       | ThinkPad X1 Carbon Gen 11   |

まとめ

image.png

PowerShellではMarkdownを自由に操作でき、配列やオブジェクトからテーブルやリストを自動生成できます。
また、システム情報やCSVをMarkdown化すれば、備忘録やドキュメント作成を効率化できます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?