PowerShellでExcelを操作する

スポンサーリンク

はじめに

PowerShellでExcelを操作したいことがあったので調べてみました。確かにExcelファイルを操作できますが、いろいろと細かいことを実施したければマクロを使った方が良いかなという感じです。

今回、サービスの一覧を取得して直接Excelファイルを操作して書き出してみました。サービスが未起動であればセルを黄色に、自動サービスが未起動であればセルを赤色にしています。

ソース

# Excelオブジェクト作成
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$excel.DisplayAlerts = $false

# ワークブックの新規作成
$book = $excel.Workbooks.Add()
# 既存のワークブックを開く場合
#$book = $excel.Workbooks.Open("C:\TEST\AAA.xlsx")

# シート名の変更(任意)
$book.Sheets(1).Name = "service"

$sheet = $book.Sheets("service") #$sheet = $excel.Worksheets.Item(1) でもよい
$i=1
Get-Service | select DisplayName,StartType,Status | %{
    $sheet.Cells.Item($i,1) = $_.DisplayName
    $sheet.Cells.Item($i,2) = [string]$_.StartType
    $sheet.Cells.Item($i,3) = [string]$_.Status
    if ($_.Status -eq "Stopped"){$sheet.Cells.Item($i,3).Interior.ColorIndex = 6} #セルを黄色
    if ($_.StartType -eq "Automatic" -and $_.Status -eq "Stopped"){$sheet.Cells.Item($i,3).Interior.ColorIndex = 3} #セルを赤
    $i+=1
}

# デスクトップへ名前をつけて保存
$book.SaveAs("${HOME}\Desktop\get-service.xlsx")
# 上書き保存する場合
#$book.Save()

# 閉じる
$excel.Quit()

# プロセス開放
$excel = $null
[GC]::collect()  

結果

コメント