PowerShellでWindowsの起動モードを確認する方法とその応用例

この記事では、PowerShellを使ってWindowsシステムの起動モード(ノーマル、セーフモード)を確認する方法について解説します。初心者でも理解しやすいように基礎から詳細に説明します。さらに、このテクニックを応用した5つの例も含めています。

目次

PowerShellとは?

PowerShellはMicrosoftが開発したタスクオートメーションと設定管理フレームワークです。スクリプト言語としても機能し、Windowsシステムをより効率的に管理するための多くのコマンドとモジュールが用意されています。

起動モードの重要性

Windowsにはさまざまな起動モードが存在しますが、一般的にはノーマルモードとセーフモードがあります。これらのモードを確認することで、トラブルシューティングやシステムの最適化に役立ちます。

ノーマルモード

このモードでは、Windowsのすべての機能とサービスが利用可能です。

セーフモード

トラブルシューティングや診断を容易にするための簡易モードです。一部のドライバやサービスが無効になっています。

PowerShellで起動モードを確認する方法

基本的なコードとその解説を以下に示します。

# このコードはシステムの起動モードを確認します
$bootMode = Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty BootupState

if ($bootMode -eq "Normal boot") {
    Write-Host "起動モード: ノーマル"
} elseif ($bootMode -eq "Fail-safe boot") {
    Write-Host "起動モード: セーフモード"
} else {
    Write-Host "起動モード: その他($bootMode)"
}

このスクリプトは`Get-WmiObject`を用いてWin32_ComputerSystemクラスから`BootupState`プロパティを取得します。そして、その値に応じて起動モードを判定しています。

解説

– `Get-WmiObject`: WMIオブジェクトを取得するコマンド
– `-Class Win32_ComputerSystem`: 取得するクラスの指定
– `Select-Object -ExpandProperty BootupState`: `BootupState`プロパティだけを展開して取得

応用例

応用例1: ログファイルに起動モードを記録する

# ログファイルに起動モードを記録
$logFile = "C:\path\to\logfile.txt"
$bootMode = Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty BootupState
Add-Content -Path $logFile -Value "起動モード: $bootMode"

応用例2: セーフモード時に特定のプログラムを停止する

# セーフモード時に特定のプログラムを停止
$bootMode = Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty BootupState
if ($bootMode -eq "Fail-safe boot") {
    Stop-Process -Name "ProgramName"
}

応用例3: ノーマルモード時に自動バックアップを実行

# ノーマルモード時に自動バックアップ
$bootMode = Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty BootupState
if ($bootMode -eq "Normal boot") {
    # バックアップスクリプトを実行
    .\Backup-Script.ps1
}

応用例4: メールで起動モードを通知

# メールで起動モードを通知
$bootMode = Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty BootupState
Send-MailMessage -To "your-email@example.com" -Subject "起動モード" -Body "起動モード: $bootMode"

応用例5: 起動モードに応じてスケジュールタスクを実行

# 起動モードに応じてスケジュールタスクを実行
$bootMode = Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty BootupState
if ($bootMode -eq "Normal boot") {
    Start-ScheduledTask -TaskName "NormalBootTask"
} elseif ($bootMode -eq "Fail-safe boot") {
    Start-ScheduledTask -TaskName "SafeBootTask"
}

まとめ

この記事では、PowerShellを用いてWindowsシステムの起動モードを確認する基本的な方法と、その応用例を5つ紹介しました。この知識を用いて、システムの状態に

合わせた柔軟な管理が可能になります。

コメント

コメントする

目次