Command Palette

Search for a command to run...

PowerShell を使用して Windows 10 から Windows 11 にアップグレードする
PowerShell を使用して Windows 10 から Windows 11 にアップグレードする10.04.2025

2025年10月13日、Microsoft は Windows 10 のサポートを正式に終了します。IT管理者やシステム管理者にとって、この期限は単なるカレンダー上の日付以上の意味を持ち、運用上の責任とリスク管理における大きな転換点となります。

Windows 11 へのアップグレードは、セキュリティの強化、パフォーマンスの向上、最新のユーザーエクスペリエンスをもたらしますが、その移行には課題がないわけではありません。Windows 10 デバイスに依然として大きく依存している組織にとって、今後数ヶ月間は極めて重要となるでしょう。


IT管理者の作業負荷

Windows 10 のサポート終了は、ITチームにとって明確な緊急性を生み出します。大規模なオペレーティングシステムアップグレードの計画には、以下の事項が含まれます。

  1. 複数の部署やオフィス間でのスケジュール調整。
  2. 重要なビジネス業務の中断を避けるためのダウンタイムの最小化。
  3. レガシーアプリケーションおよびハードウェアとの互換性の確保。
  4. アップグレード中およびアップグレード後のエンドユーザーサポート、コミュニケーション、トラブルシューティングの対応。

これらのタスクは急速に増大し、IT管理者の作業負荷を増やし、すでに限られたリソースをさらに圧迫する可能性があります。


タイミングの課題

通常の勤務時間中にアップグレードを行うことは、ほとんど選択肢になりません。従業員のアクティブなセッションを中断すると、生産性の低下、未保存の作業、そして不満につながる可能性があります。結果として、ほとんどのITチームは、深夜、週末、または祝日といった営業時間外にアップグレードをスケジュールせざるを得ず、リソース管理をさらに困難にしています。


遅延のリスク

アップグレードを怠る組織は、以下のような重大なリスクに直面します。

  1. セキュリティの脆弱性: 定期的なアップデートがないと、Windows 10 を実行しているシステムは、マルウェア、ランサムウェア、高度なサイバー攻撃の格好の標的となります。
  2. コンプライアンスの問題: 古いシステムを運用することは、特に厳格なデータ保護規則に縛られる業界において、規制不遵守につながる可能性があります。
  3. 限定的なサポート: ハードウェアベンダーやソフトウェアプロバイダーは、徐々に Windows 10 の互換性提供を停止し、IT部門はサポートの選択肢が減少します。
  4. 運用停止時間: セキュリティ侵害やシステム障害が発生した場合、復旧費用とダウンタイムは、今日のアップグレード計画にかかる労力をはるかに上回る可能性があります。

PowerShell を使用したアップグレードの自動化

幸いなことに、自動化は手作業による負担の多くを軽減するのに役立ちます。PowerShell スクリプトを使用することで、IT管理者は複数のマシンにわたる Windows 10 から 11 へのアップグレードを標準化し、スケジュール設定できます。これにより、時間を節約し、エラーを減らすことができます。

以下は、お使いの環境でアップグレードを実行するために使用できる PowerShell スクリプトのプレースホルダーセクションです。


# Define the log file path

$logFilePath = "C:\Windows11UpgradeLog.txt"

# Create a temporary download folder

$tempFolder = "C:\Windows11UpgradeTemp"

if (-Not (Test-Path $tempFolder)) {

New-Item -ItemType Directory -Path $tempFolder | Out-Null

}

# Define file download locations

$installAssistantUrl = "https://go.microsoft.com/fwlink/?linkid=2171764" # Updated link

$isoDownloadUrl = "https://www.microsoft.com/en-us/software-download/windows11"

# Define local file paths

$installAssistantPath = "$tempFolder\Windows11InstallationAssistant.exe"

$isoDownloadPath = "$tempFolder\Windows11ISO.html" # Save the link since ISO download requires interaction

# Function to log messages with a timestamp

function Log-Message {

param (

[string]$message

)

# Append the message with a timestamp to the log file

"$((Get-Date).ToString('yyyy-MM-dd HH:mm:ss')) - $message" | Out-File -FilePath $logFilePath -Append

}

# Check for 64-bit architecture CPU

try {

$cpu = Get-CimInstance Win32_Processor

if ($cpu.AddressWidth -eq 64) {

Log-Message "CPU architecture is 64-bit: true"

} else {

Log-Message "CPU architecture is 64-bit: false"

}

} catch {

Log-Message "Failed to retrieve CPU architecture information."

}

# Check for TPM 2.0

$TPM_Enabled = $false

try {

$tpm = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm

if ($tpm.SpecVersion -like "2.0*") {

Log-Message "TPM 2.0 is enabled: true"

$TPM_Enabled = $true

} else {

Log-Message "TPM 2.0 is enabled: false"

}

} catch {

Log-Message "Failed to retrieve TPM information."

}

# Check for Secure Boot

$SecureBoot_Enabled = $false

try {

$secureBoot = Confirm-SecureBootUEFI

if ($secureBoot) {

Log-Message "Secure Boot is enabled: true"

$SecureBoot_Enabled = $true

} else {

Log-Message "Secure Boot is enabled: false"

}

} catch {

Log-Message "Failed to retrieve Secure Boot status."

}

# If TPM 2.0 or Secure Boot is missing, cancel the upgrade

if (-not $TPM_Enabled -or -not $SecureBoot_Enabled) {

Log-Message "System does not meet Windows 11 requirements (TPM 2.0 or Secure Boot missing). Upgrade cancelled."

Exit

}

# Function to download the Windows 11 Installation Assistant

function Download-InstallationAssistant {

try {

Log-Message "Downloading Windows 11 Installation Assistant..."

Invoke-WebRequest -Uri $installAssistantUrl -OutFile $installAssistantPath

Log-Message "Download completed: $installAssistantPath"

} catch {

Log-Message "Failed to download Windows 11 Installation Assistant."

}

}

# Function to save the Windows 11 ISO download link

function Save-ISO-DownloadLink {

try {

Log-Message "Saving Windows 11 ISO download link..."

"<html><body><a href='$isoDownloadUrl'>Download Windows 11 ISO</a></body></html>" | Out-File -FilePath $isoDownloadPath

Log-Message "ISO download link saved to: $isoDownloadPath"

}

catch {

Log-Message "Failed to save Windows 11 ISO download link."

}

}

# Function to install the Windows 11 Installation Assistant

function Install-InstallationAssistant {

try {

# Define the arguments

$arguments = "/QuietInstall /SkipEULA /Auto Upgrade /ShowProgressInTaskBarIcon"

Log-Message "Starting Windows 11 Installation Assistant with arguments: $arguments"

# Start the installation assistant with the defined arguments

$process = Start-Process -FilePath $installAssistantPath -ArgumentList $arguments -PassThru -NoNewWindow

# Immediately log the process ID after starting the process

Log-Message "Windows 11 Installation Assistant started with ID: $($process.Id)"

# Wait for the process to exit

$process.WaitForExit()

# Check if the process has exited and log the exit code

if ($process.HasExited) {

Log-Message "Windows 11 Installation Assistant process has exited with code: $($process.ExitCode)"

}

} catch {

Log-Message "Failed to start Windows 11 Installation Assistant. Error: $_"

}

}

# Check if the Installation Assistant is already downloaded

if (Test-Path $installAssistantPath) {

Log-Message "Windows 11 Installation Assistant is already downloaded."

} else {

Download-InstallationAssistant

}

# Save the ISO download link

Save-ISO-DownloadLink

# Run the installation assistant

if (Test-Path $installAssistantPath) {

Install-InstallationAssistant

} else {

Log-Message "Installation Assistant not found, skipping installation."

}

Log-Message "Script execution completed."



今後の展望

Windows 10 から Windows 11 への移行は、単なる技術的な必要性だけでなく、組織のセキュリティと効率性を保護するための戦略的な一歩です。今から準備することで、IT管理者はサポート期限が到来する前に、中断を最小限に抑え、スムーズな移行を確実にすることができます。


Monitic RMM を使用してこのスクリプトを一括展開し、Windows 11 への移行を完了できることをご存知でしたか? https://www.monitic.com