PowerShellで特定のアプリケーションがインストールされているか確認する方法

この記事ではPowerShellを用いて、特定のアプリケーションがインストールされているかどうかを確認する方法について詳しく解説します。初心者でも簡単に理解できるように、基本的なコード例から応用例まで、多角的に解説していきます。

目次

PowerShellとは

PowerShellは、Microsoftが開発したタスク自動化と設定管理フレームワークです。コマンドラインシェルとスクリプト言語が組み合わされています。

PowerShellの特長

– オブジェクト指向
– 強力なスクリプト言語
– 豊富なプレビルトコマンド

環境の準備

PowerShellが既にインストールされている場合はこのステップをスキップしてください。それ以外の場合は、Microsoftの公式サイトからダウンロードしてインストールします。

インストール方法

1. Microsoftの公式サイトへアクセス
2. 「PowerShell」を検索
3. 指示に従いダウンロード・インストール

特定のアプリケーションがインストールされているか確認する基本的なコード

# 特定のアプリケーションがインストールされているか確認する
$applicationName = "Microsoft Office"
$installedApps = Get-WmiObject -Query "SELECT * FROM Win32_Product" | Select-Object -Property Name
if ($installedApps -match $applicationName) {
    Write-Host "$applicationName はインストールされています。"
} else {
    Write-Host "$applicationName はインストールされていません。"
}

このコードは、WMI(Windows Management Instrumentation)を用いてインストールされている全てのアプリケーションを取得し、その中に特定のアプリケーション(この例では”Microsoft Office”)が存在するかを確認します。

コードの説明

– `$applicationName`: 確認したいアプリケーションの名前を指定します。
– `Get-WmiObject`: WMIを用いて情報を取得します。
– `-match`: 文字列がマッチするかを確認する演算子です。

応用例

以下では、この基本的なコードを更に活用するいくつかの応用例を紹介します。

応用例1: 複数のアプリケーションを一度に確認する

# 複数のアプリケーションがインストールされているか確認する
$applicationNames = @("Microsoft Office", "Google Chrome", "Adobe Reader")
$installedApps = Get-WmiObject -Query "SELECT * FROM Win32_Product" | Select-Object -Property Name

foreach ($appName in $applicationNames) {
    if ($installedApps -match $appName) {
        Write-Host "$appName はインストールされています。"
    } else {
        Write-Host "$appName はインストールされていません。"
    }
}

コードの説明

– `$applicationNames`: 確認したいアプリケーションの名前を配列で指定します。
– `foreach`: 配列の各要素に対して処理を行います。

応用例2: 確認結果をテキストファイルに出力する

# 確認結果をテキストファイルに出力する
$applicationName = "Microsoft Office"
$installedApps = Get-WmiObject -Query "SELECT * FROM Win32_Product" | Select-Object -Property Name
$outputPath = "C:\path\to\output.txt"

if ($installedApps -match $applicationName) {
    "インストール済み: $applicationName" | Out-File $outputPath
} else {
    "未インストール: $applicationName" | Out-File $outputPath
}

コードの説明

– `$outputPath`: 出力先のテキストファイルのパスを指定します。
– `Out-File`: ファイルにテキストを出力します。

応用例3: 確認したアプリケーションのバージョンも取得する

# アプリケーションのバージョンも取得する
$applicationName = "Microsoft Office"
$installedApp = Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE (Name LIKE '%$applicationName%')"
if ($installedApp) {
    Write-Host "$applicationName はインストールされています。バージョンは $($installedApp.Version) です。"
} else {
    Write-Host "$applicationName はインストールされていません。"
}

コードの説明

– `LIKE`: SQLライクなクエリで部分一致を検索します。
– `$($installedApp.Version)`: オブジェクトのプロパティを文字列内で展開します。

応用例4: GUIを使って確認する

# GUIを使って確認する
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Text = 'アプリケーション確認'
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10, 10)
$textBox.Size = New-Object System.Drawing.Size(300, 20)
$form.Controls.Add($textBox)

$button = New-Object System.Windows.Forms.Button
$button.Location = New-Object System.Drawing.Point(320, 10)
$button.Size = New-Object System.Drawing.Size(100, 20)
$button.Text = '確認'
$button.Add_Click({
    $appName = $textBox.Text
    $installedApps = Get-WmiObject -Query "SELECT * FROM Win32_Product" | Select-Object -Property Name
    if ($installedApps -match $appName) {
        [System.Windows.Forms.MessageBox]::Show("$appName はインストールされています。")
    } else {
        [System.Windows.Forms.MessageBox]::Show("$appName はインストールされていません。")
    }
})
$form.Controls.Add($button)

$form.ShowDialog()

コードの説明

– `System.Windows.Forms`: Windows Formsを使用するためのアセンブリを読み込みます。
– `New-Object`: 新しいオブジェクトを生成します。

応用例5: インストールされていない場合にインストールする

# インストールされていない場合にインストールする
$applicationName = "Notepad++"
$installedApps = Get-WmiObject -Query "SELECT * FROM Win32_Product" | Select-Object -Property Name

if ($installedApps -match $applicationName) {
    Write-Host "$applicationName はインストールされています。"
} else {
    Write-Host "$applicationName はインストールされていません。インストールを開始します。"
    Start-Process "https://notepad-plus-plus.org/downloads/"
}

コードの説明

– `Start-Process`: 新しいプロセスを開始します。この場合、デフォルトのWebブラウザが起動してNotepad++のダウンロードページが開きます。

まとめ

PowerShellを使えば、特定のアプリケーションがインストールされているか簡単に確認できます。基本的なコードから、複数のアプリケーションを一度に確認したり、GUIを使った確認方法など、多くの応用例があります。この知識を活用して、より効率的なシステム管理を行いましょう。

コメント

コメントする

目次