【初心者向け】PowerShellでモニター解像度を取得する方法を完全解説【複数ディスプレイOK】

PowerShellでディスプレイ解像度を取得する方法

Windows環境でスクリプトを使ってモニターのスクリーンサイズ(画面の解像度)を取得したいとき、PowerShellが非常に便利です。特に、マルチディスプレイ環境や管理スクリプトの一環として、画面サイズの取得処理を自動化したい場合に役立ちます。

本記事では、PowerShellで現在のスクリーンサイズ(画面解像度)を取得する方法を、初心者の方でもわかりやすく丁寧に解説します。実行できるサンプルスクリプト付きで、コピーしてすぐ使えます!


✅ PowerShellとは?

PowerShellは、Windowsに標準搭載されている強力なシェルおよびスクリプト言語です。システム管理や自動化処理に適しており、GUI操作では面倒なタスクをコマンド1行で実現できます。


🎯 目的:スクリーンサイズ(解像度)を取得する

「今使っているPCの画面サイズがいくつか知りたい」
「複数モニターのサイズをスクリプトで取得したい」

そんなとき、PowerShellを使えば、以下のような簡単なコードで解決できます。


👨‍💻 単一画面(メインディスプレイ)のサイズを取得するスクリプト

Add-Type -AssemblyName System.Windows.Forms

$screen = [System.Windows.Forms.Screen]::PrimaryScreen
$width = $screen.Bounds.Width
$height = $screen.Bounds.Height

Write-Output "スクリーン解像度: ${width} x ${height}"

このスクリプトをPowerShellで実行することで、現在使用しているメインディスプレイの解像度(例:1680 x 1050)を簡単に取得できます。

単一画面(メインディスプレイ)のサイズを取得するスクリプト

🖥 複数モニターすべてのスクリーンサイズを取得する方法

複数ディスプレイを接続している環境では、以下のコードですべてのモニターの解像度をリスト形式で取得できます。

Add-Type -AssemblyName System.Windows.Forms

foreach ($screen in [System.Windows.Forms.Screen]::AllScreens) {
$deviceName = $screen.DeviceName
$width = $screen.Bounds.Width
$height = $screen.Bounds.Height
Write-Output "$deviceName : ${width} x ${height}"
}

出力例:

複数モニターすべてのスクリーンサイズを取得

💡 よくあるトラブルと対処法

$screen.Bounds がうまく取得できない

これは、環境によって System.Windows.Forms が正しくロードされていない場合に起こることがあります。その場合は、以下を確認してください:

  • Windows上で実行しているか(LinuxやmacOS上のPowerShell Coreでは非対応)
  • PowerShellのバージョンが5.1以上であるか(確認コマンド:$PSVersionTable.PSVersion

📝 実用例:スクリプトでログ収集や自動レポートに活用

取得した画面解像度をログファイルに出力したり、ユーザー環境の診断情報として活用するケースも多いです。

"$env:USERNAME : ${width} x ${height}" | Out-File "C:\temp\screenlog.txt" -Append

このようにログファイルに追記すれば、複数ユーザー環境の管理にも役立ちます。


🔚 まとめ:PowerShellで画面解像度を取得するのは超簡単!

PowerShellを使えば、GUIでは確認しづらいスクリーンサイズをわずか数行で取得可能です。特に複数ディスプレイを扱っているユーザーや、システム管理者にとっては非常に便利なスクリプトになります。


Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法

PowerShellでLinuxのtail -fと同じリアルタイムログ監視を実現する方法

PowerShellでLinuxのtail -fと同じリアルタイムログ監視を実現する方法

システム管理者や開発者にとって、リアルタイムでログファイルを監視することは重要な作業の一つです。特にLinux環境では、tail -f コマンドを使ってログファイルの更新を監視することが一般的です。しかし、Windows環境では同じような機能を持つコマンドが標準では用意されていません。

そこで、本記事ではPowerShellを使って、Linuxのtail -fと同じようにテキストファイルの内容をリアルタイムで表示する方法について詳しく解説します。

tail -fとは?

Linuxのtail -f コマンドは、指定したファイルの末尾(最後の数行)を表示し、ファイルが更新されるたびにその内容をリアルタイムで追記表示する機能を持っています。システムのログ監視や、アプリケーションのデバッグ作業などで頻繁に使用されます。

例えば、以下のようなコマンドを実行すると、/var/log/syslogの内容を監視できます。

tail -f /var/log/syslog

Windows環境でも同様の機能を持つコマンドがあると、アプリケーションのログ監視やデバッグ作業が効率化されます。

PowerShellでtail -fを実現する方法

Windows PowerShellには、Get-Content コマンドレットを使用することで、テキストファイルをリアルタイムで監視することができます。

基本的なコマンド

以下のPowerShellコマンドを使用すると、Linuxのtail -fと同様に、ファイルの末尾を監視し、新しい行が追加されるたびに表示することができます。

Get-Content C:\path\to\file.log -Wait -Tail 10

オプションの説明

  • C:\path\to\file.log:監視したいログファイルのフルパス
  • -Wait:ファイルの更新を監視し、リアルタイムで表示
  • -Tail 10:ファイルの末尾10行を表示してから、その後の変更を監視(10の部分は任意の行数に変更可能)

このコマンドを実行すると、ファイルが更新されるたびに新しい行がPowerShellウィンドウに表示されます。

PowerShellスクリプトを使ったログ監視の自動化

より効率的にログ監視を行うために、PowerShellスクリプトを作成して実行することも可能です。

以下のスクリプトを使えば、特定のログファイルを監視しながら、リアルタイムで表示できます。

param (
    [string]$LogFile = "C:\path\to\file.log"
)

if (!(Test-Path $LogFile)) {
    Write-Host "ファイルが見つかりません: $LogFile"
    exit 1
}

Get-Content $LogFile -Wait -Tail 10

このスクリプトをtail.ps1として保存し、以下のように実行すると、任意のログファイルをリアルタイムで監視できます。

powershell -ExecutionPolicy Bypass -File tail.ps1 -LogFile "C:\path\to\file.log"

PowerShellでより高度なログ監視を行う方法

フィルタリング機能の追加

ログファイルが大量の情報を出力する場合、特定のキーワードを含む行のみを表示したいことがあります。その場合、Select-Stringを使うと便利です。

Get-Content C:\path\to\file.log -Wait | Select-String "ERROR"

このコマンドを実行すると、ログファイルの中から「ERROR」という文字列を含む行のみをリアルタイムで表示できます。

タイムスタンプ付きのログ表示

リアルタイムでログを監視する際に、タイムスタンプを追加すると、ログの発生時間が明確になり、解析がしやすくなります。

以下のスクリプトを使うと、各行の前にタイムスタンプを追加して表示できます。

Get-Content C:\path\to\file.log -Wait | ForEach-Object { "[$(Get-Date -Format "yyyy-MM-dd HH:mm:ss")] $_" }

これにより、ログの各行が以下のように表示されます。

[2025-04-02 12:30:45] サーバーが起動しました。
[2025-04-02 12:30:50] 接続が確立されました。

まとめ

PowerShellを使えば、Linuxのtail -fと同じように、Windows環境でもリアルタイムでログファイルを監視することが可能です。

主なポイント

  1. Get-Content -Wait -Tail を使用することでリアルタイムログ監視が可能
  2. PowerShellスクリプトを作成すれば、より柔軟なログ監視が実現できる
  3. Select-String を活用すると、特定のキーワードを含むログのみを表示可能
  4. タイムスタンプを追加することで、ログの発生時間を明確にできる

この方法を活用すれば、Windows環境でも効率的にログ監視ができるようになります。ぜひ実際に試してみてください!

Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法

PowerShellでシステム通知を表示する方法【モジュール不要・簡単】

PowerShellでシステム通知を表示する方法【モジュール不要・簡単】

Windows では、バルーン通知(トースト通知)を表示する方法はいくつかあります。一般的には BurntToast モジュールを使う方法が知られていますが、この方法は Windows 10 専用 であり、また 追加のモジュールをインストールする必要がある ため、環境によっては利用できません。

そこで、本記事では PowerShell の標準機能のみ を使って、System.Windows.Forms.NotifyIcon を利用し、バルーン通知を表示する方法を詳しく解説します。Visual Studio のインストールも不要で、どの Windows 環境でも実行できます。


✅ PowerShell でバルーン通知を表示する方法

PowerShell には System.Windows.Forms という .NET Framework のライブラリがあり、その中に NotifyIcon という通知用のコンポーネントが含まれています。これを活用することで、簡単にバルーン通知を表示できます。

🔹 バルーン通知の基本スクリプト

まずは、最も基本的なバルーン通知を表示するスクリプトを紹介します。

# .NET の Windows Forms をロード
Add-Type -AssemblyName System.Windows.Forms

# NotifyIcon オブジェクトを作成
$notify = New-Object System.Windows.Forms.NotifyIcon
$notify.Icon = [System.Drawing.SystemIcons]::Information  # 情報アイコンを設定
$notify.BalloonTipTitle = "通知タイトル"
$notify.BalloonTipText = "これはPowerShellのバルーン通知です。"
$notify.Visible = $true  # アイコンをタスクトレイに表示

# バルーンを表示(ミリ秒単位で表示時間を指定)
$notify.ShowBalloonTip(5000)  # 5秒間表示

# アイコンを消す(不要なら削除)
Start-Sleep -Seconds 6
$notify.Dispose()

このスクリプトを PowerShell で実行すると、タスクバーの通知エリア(システムトレイ)に 情報アイコン付きのバルーン通知 が表示されます。


✅ バルーン通知のカスタマイズ

上記の基本スクリプトを少し拡張し、カスタマイズ可能なスクリプトを作成してみましょう。

🔹 カスタムバルーン通知

以下のスクリプトでは、通知タイトル、メッセージ、アイコン、表示時間 を自由に指定できます。

param (
    [string]$Title = "PowerShell通知",
    [string]$Message = "これはカスタムバルーン通知です。",
    [int]$Duration = 5000  # 表示時間(ミリ秒)
)

# Windows Forms をロード
Add-Type -AssemblyName System.Windows.Forms

# NotifyIcon オブジェクトを作成
$notify = New-Object System.Windows.Forms.NotifyIcon
$notify.Icon = [System.Drawing.SystemIcons]::Information  # アイコン(変更可能)
$notify.BalloonTipTitle = $Title
$notify.BalloonTipText = $Message
$notify.Visible = $true

# バルーンを表示
$notify.ShowBalloonTip($Duration)

# 指定時間後にアイコンを消す
Start-Sleep -Milliseconds ($Duration + 1000)
$notify.Dispose()

💡 スクリプトの実行例

PowerShell で以下のように実行すると、カスタムメッセージを表示できます。

powershell -File "balloon.ps1" -Title "システム警告" -Message "ディスクの空き容量が少なくなっています。" -Duration 8000

🔹 アイコンを変更する

デフォルトでは 「情報アイコン」 を使用していますが、以下のように変更できます。

$notify.Icon = [System.Drawing.SystemIcons]::Warning  # 警告アイコン

利用できるアイコン:

  • [System.Drawing.SystemIcons]::Information(情報)
  • [System.Drawing.SystemIcons]::Warning(警告)
  • [System.Drawing.SystemIcons]::Error(エラー)

✅ スケジュールで定期的に通知を送る

例えば、1時間ごとにリマインダーを送る ような使い方も可能です。
Windows のタスクスケジューラを使えば、自動実行できます。

🔹 タスクスケジューラで PowerShell スクリプトを定期実行

  1. タスクスケジューラを開くWin + Rtaskschd.msc
  2. 「タスクの作成」 をクリック
  3. 「全般」タブ
    • 名前: PowerShell通知
    • 実行時に最上位の特権を使用する(チェック)
  4. 「トリガー」タブ
    • 新規 → 「毎時」 → 60分ごとに設定
  5. 「操作」タブ
    • 新規 → プログラムの開始
    • プログラム/スクリプト: powershell.exe
    • 引数の追加: powershellコピーする編集する-ExecutionPolicy Bypass -File "C:\Scripts\balloon.ps1" -Title "リマインダー" -Message "1時間経過しました。"
  6. 「OK」を押してタスクを保存

これで、1時間ごとにバルーン通知が表示されるようになります。


✅ まとめ

BurntToast を使わずに PowerShell の標準機能だけで Windows のバルーン通知を表示する方法 を紹介しました。
New-Object System.Windows.Forms.NotifyIcon を活用することで、モジュール不要で簡単に実装できる ので、どんな Windows 環境でも動作します。