Windows 11互換性チェッカーを使用して、PCがWindows11をインストールできるかどうかを確認します
S Zoneは、Windows 11のハードウェア要件に基づいて、PowerShellに基づくWindows 11互換性チェッカー(Get-Windows11Compatibility)を構築し、PCがWindows11をインストールできるかどうかを確認できるようにしました。
Windows 10PCをWindows11に無料でアップグレードできる場合があることをご存知かもしれません。ただし、これを行うには、有効なWindows10ライセンスが必要です。
さらに、PCはWindows11をインストールするための最小要件を満たしている必要があります。これが、このツールを作成した理由です。現在のPCにWindows11をインストールできるかどうかを確認するのに役立ちます。
この短いガイドでは、このツールの開発方法を学びます。さらに、ガイドでは、レポートの実行方法とツールの制限について説明しています。
投稿トピックを閲覧する
- SゾーンのWindows11互換性チェッカースクリプト(Get-Windows11Compatibility)の説明
- Windows11互換性チェッカーの制限
- Get-Windows11Compatibilityをダウンロードして使用する方法
SゾーンのWindows11互換性チェッカースクリプト(Get-Windows11Compatibility)の説明
紹介で示唆したように、このツールはPowerShell上に構築されています。このセクションでは、ツールの背後にあるスクリプトについて説明します。このセクションは、主にPowerShellを学習したいWindowsシステム管理者を対象としています。
したがって、ツールをダウンロードして使用するだけの場合は、このセクションをスキップできます。
Get-Windows11Compatibilityパラメーター
以下のコードは、 パラメータ定義 Windows11互換性チェッカーの。見つけやすくするために、パラメータを太字にしました。
[CmdletBinding(DefaultParameterSetName='DisplayResult')] Param( [Parameter( ParameterSetName='DisplayResult', Position=0, Mandatory=$false)] [Switch]$ DisplayResult , [Parameter( ParameterSetName='ExportToTextFile', Position=0, Mandatory=$false)] [Switch]$ ExportToTextFile , [Parameter( ParameterSetName='PassThru', Position=0, Mandatory=$false)] [Switch]$ PassThru , #define different parameter set names for $ExportToTextFile and $PassThru #Both parameters cannot be called in the same command [Parameter( ParameterSetName='ExportToTextFile', Mandatory=$true, Position=1)] [Parameter( ParameterSetName='PassThru', Mandatory=$true, Position=1)] [string]$ ReportPath )
ご覧のとおり、4つのパラメータがあります– DisplayResult 、 ExportToTextFile 、 パススルー 、 と ReportPath 。
次のいくつかのサブセクションでパラメータについて説明します
DisplayResultパラメーター
ザ DisplayResult parameterはスイッチパラメータです。これは、Windows 11互換性チェッカーにこのパラメーターを使用するように指示するには、値を追加せずに呼び出すことを意味します。
このパラメータを定義した方法は次のとおりです…
[Parameter( ParameterSetName='DisplayResult', Position=0, Mandatory=$false)] [Switch]$ DisplayResult
また、パラメータが「DisplayResult」と呼ばれるParameterSetNameに属していることにも気づいたでしょう。これが意味することは、 DisplayResult このParameterSet内の他のパラメーターとパラメーター。
ツールの背後にあるスクリプトを説明するとわかるように、 DisplayResult PowerShellコンソールにWindows11互換性チェッカーの結果を表示するパラメーター。
ExportToTextFileパラメーター
これはスイッチパラメータでもあります。これは、「ExportToTextFile」と呼ばれる別のParameterSetNameに属しています。これは、このパラメータをと同じコマンドで使用できないことを意味します。 DisplayResult パラメータ
このパラメータを定義するコードは次のとおりです…
[Parameter( ParameterSetName='ExportToTextFile', Position=0, Mandatory=$false)] [Switch]$ ExportToTextFile
このパラメータを呼び出すと、 Get-Windows11Compatibility PCの互換性レポートの結果をテキストファイルに保存します。これに基づいて、別のパラメータを指定する必要があります。 ReportPath 。
ザ ReportPath Windows11互換性チェッカー互換性レポートを保存するフォルダーパスを指定するために使用されます。このパラメータについては後で詳しく説明します。
にもどる ExportToTextFile パラメータ、前述したように、これはスイッチパラメータでもあります。指定する場合、値は必要ありません。
このパラメーターを指定すると、 ReportPath パラメータ、 Get-Windows11Compatibility で指定したパスにレポートをエクスポートします ReportPath パラメータ。
PassThruパラメーター
ザ パススルー パラメーターは、PowerShellコンソールにWindows11互換性チェッカーの結果を表示します。さらに、結果をテキストファイルに保存します。
このパラメータを作成するために使用したコードは次のとおりです…
[Parameter(
ParameterSetName='PassThru',
Position=0,
Mandatory=$false)]
[Switch]$ PassThru
と同じロジックに従います ExportToTextFile パラメータ、もし パススルー パラメータはコマンドの結果をテキストファイルに保存します。テキストファイルを保存するためのパスを指定する必要があります。
エリプシス7タブレットをroot化する方法
つまり、テキストファイルレポートを保存するためのパスも指定する必要があります。 ReportPath パラメータ。
このパラメータは、「PassThru」と呼ばれる別のParameterSetNameに属しています。
これまでに、3つのParameterSetNamesを定義しました– DisplayResult 、 ExportToTextFile 、 と パススルー 。
ReportPathパラメーター
これは4番目の最後のパラメーターです。以下のコードからわかるように、これは文字列パラメータです。
[Parameter(
ParameterSetName='ExportToTextFile',
Mandatory=$true,
Position=1)]
[Parameter(
ParameterSetName='PassThru',
Mandatory=$true,
Position=1)]
[string]$ ReportPath
すでに推測しているかもしれませんが、スイッチパラメータとは異なり、文字列パラメータにはユーザーであるあなたからのエントリが必要です。
について注意すべきもう1つの重要なこと ReportPath パラメータは、 ExportToTextFile 、 と パススルー コマンド。これは、このパラメーターがそれぞれのParameterSetNamesに属していることも意味します– ExportToTextFile 、 と パススルー 。
でParameterSetNamesを定義する方法をご覧ください ReportPath 以下のパラメータコード…
[Parameter(
ParameterSetName='ExportToTextFile',
Mandatory=$true,
Position=1)]
[Parameter(
ParameterSetName='PassThru',
Mandatory=$true,
Position=1)]
[string]$ ReportPath
PowerShellパラメーターの詳細については、このテーマに関する完全なガイドをお読みください– PowerShellパラメーター:構文、タイプ、属性、引数、および例 。
Windows 11互換性チェッカー(Get-Windows11Compatibility)スクリプト
Get-Windows11Compatibilityスクリプトは、2つのセクションに分かれています。最初のセクションでは、必要なさまざまな結果を生成しました。
仕様結果コード
以下のコードは、最初のセクションの完全なコードを示しています…
Try { $Processor = Get-WmiObject Win32_Processor $MaxClockSpeed = $Processor.MaxClockSpeed $CurrentClockSpeed = [math]::round(($Processor.CurrentClockSpeed)/1000, 1) $NumberOfCores = $Processor.NumberOfCores $RAMSize = [math]::round(((Get-WmiObject -Class win32_computersystem).TotalPhysicalMemory)/1GB, 0) #The following commands gets the free space on the drive Windows 10 is installed $OSInstallDrive = ($Env:windir -split ':')[0] + ':' #Retrieves current OS install path Drive $FreeSpace = [math]::round(((Get-WmiObject -Class win32_logicaldisk | Where-Object {$_.DeviceID -like '$OSInstallDrive'}).FreeSpace)/1GB, 0) $TPMVersion = (Get-WmiObject -Namespace 'rootcimv2securitymicrosofttpm' -Class win32_tpm -ErrorAction Stop).PhysicalPresenceVersionInfo #This command requires PS to open as Administrator $FirmwareType = $env:firmware_type $SecureBootState = Confirm-SecureBootUEFI -ErrorAction Stop #This command requires PS to open as Administrator $GraphicsResolution = (Get-WmiObject win32_VideoController).CurrentVerticalResolution } Catch { #$errormessage = $error.Exception.Message Write-Host 'This command failed because you did not open PowerShell as administrator' Write-Host 'To run this command, please open PowerShell as administrator' Write-Host 'For steps, visit https://www.itechguides.com/run-powershell-as-administrator/' Break }最初の例では、コードを 試して、ブロックをキャッチ エラーをキャプチャして管理できるようにします。次に、次のコードを使用してPCの仕様を確認しました。
$Processor = Get-WmiObject Win32_Processor $MaxClockSpeed = $Processor.MaxClockSpeed $CurrentClockSpeed = [math]::round(($Processor.CurrentClockSpeed)/1000, 1) $NumberOfCores = $Processor.NumberOfCores
最初の行はプロセッサ情報を取得し、その情報を保存します。 プロセッサー 。この情報はWindows11互換性チェッカーの重要な要素であるため、必要です。
次に、2行目で、プロセッサのMaxClockSpeedを抽出しました。
ドアダッシュからクレジットカードを削除します
最終的にはこの仕様を使用しないことにしましたが、後で使用することにした場合に備えて、コードをスクリプトに残しました。
3行目では、現在のクロック速度をCurrentClockSpeedという変数でプロセッサに保存しました。この結果はHzで返されます。
それで、それをHzからGHzに変換するために、私はラップしました $ Processor.CurrentClockSpeed (Hz単位のプロセッサ速度)PowerShell [math] :: round関数。
[math]::round
これにより、結果が定義された小数点以下の桁数に丸められます。この例では、小数点以下1桁の切り上げを使用しました。ただし、プロセッサの速度をHzからGHzに変換するために、分割しました $ Processor.CurrentClockSpeed 1000までに。
これが最終的なコードです。
$CurrentClockSpeed = [math]::round(($Processor.CurrentClockSpeed)/1000, 1)
また、以下のコマンドを使用して、プロセッサのCPUコアの数を返しました。
$NumberOfCores = $Processor.NumberOfCores
これらのコードの結果は、以下のスクリーンショットで強調表示されています…後でこれを生成する方法の詳細。
プロセッサの仕様コードから進んで、以下のコードはPCのRAM(メモリ)仕様を生成します。
$RAMSize = [math]::round(((Get-WmiObject -Class win32_computersystem).TotalPhysicalMemory)/1GB, 0)
プロセッサコードと同様に、このコードはGet-WmiObjectPowerShellコマンドを使用してPCに関する情報を抽出します。このコマンドの結果の1つは、 TotalPhysicalMemory 財産。
これは、バイト単位で返されるPC上のRAMの合計です。繰り返しになりますが、プロセッサの仕様と同様に、これをバイトからギガバイトに変換するために、1GB(1024バイト)で除算しました。
最後に、数値を切り上げるために、結果全体をPowerShell [math] :: round関数でラップしました。結果はこのスクリーンショットの強調表示された部分に示されています。
PCのプロセッサとRAMの仕様を取得した後、次に、PCの現在の空き領域のディスク領域を決定するコードがあります。繰り返しになりますが、これはWindows 11システム要件の一部であるため、Windows11互換性チェッカーの一部です。
このタスクを完了するために以下のコードを使用しました…
#The following commands gets the free space on the drive Windows 10 is installed $OSInstallDrive = ($Env:windir -split ':')[0] + ':' #Retrieves current OS install path Drive $FreeSpace = [math]::round(((Get-WmiObject -Class win32_logicaldisk | Where-Object {$_.DeviceID -like '$OSInstallDrive'}).FreeSpace)/1GB, 0)最初の行(コメント行の後)で、Windows10がインストールされているパーティションを特定しました。これには以下のコードを使用しました…
$OSInstallDrive = ($Env:windir -split ':')[0] + ':'
コードの最初の部分はPowerShellを使用していました $ Env:windir OSパーティションを返す変数。次に、splitプロパティを使用して、結果を2つの部分に分割しました。
わかりやすくするために、次の結果を示します…
$Env:windir -split ':'
PowerShellの分割プロパティが壊れます C: WINDOWS 2つの配列に、 C 、 と ウィンドウズ 。ただし、ドライブ文字が必要です。
ドライブ文字(配列の最初の部分)を返すために、前のコマンドの最後に[0]を追加しました…
PowerShellアレイは、アレイのメンバーを0からカウントします。($Env:windir -split ':')[0]
ご覧のとおり、コマンドは標準のコロン(:)なしでドライブ文字を返しました。これを追加するために、手動でコロンを含めました…
($Env:windir -split ':')[0] + ':'
なぜ私がOSがインストールされているパーティション文字を決定するためにすべての問題を経験したのか疑問に思っているなら、ここに理由があります。次のコマンドで必要です…
このコマンドが最後のコマンドとどのように関連しているかを強調するために、以下に両方のコマンドを含めました。$OSInstallDrive = ($Env:windir -split ':')[0] + ':' $FreeSpace = [math]::round(((Get-WmiObject -Class win32_logicaldisk | Where-Object {$_.DeviceID -like '$OSInstallDrive'}).FreeSpace)/1GB, 0)Windows 11のシステム要件の一部は、PCで使用可能な空き容量です。したがって、これはWindows11互換性チェッカーが返す仕様の1つです。
上記のスクリプトでは、 Get-WmiObject ローカルコンピュータのディスク情報を返すコマンド。次に、結果をパイプで送信しました Where-Object 前のコマンドのDeviceIDで出力をフィルタリングしました。
Get-WmiObject -Class win32_logicaldisk | Where-Object {$_.DeviceID -like '$OSInstallDrive'}コンピューターでコマンドを実行すると、下のスクリーンショットに示す結果が返されました。
screnshotからわかるように、コマンドは次のプロパティを返しました フリースペース 、バイト単位。この値をギガバイトに変換するには、値を1GBで割る必要があります。
次に、値を丸めるには、 [数学] ::ラウンド 関数。以下のスクリプトで太字になっているゼロ(0)は、値を丸める数値の数です。
$FreeSpace = [math]::round(((Get-WmiObject -Class win32_logicaldisk | Where-Object {$_.DeviceID -like '$OSInstallDrive'}).FreeSpace)/1GB, 0 )最後に、コンピューターがサポートしている現在のファームウェア(BIOSまたはUEFI)であるTPMバージョンを決定しました。また、SecureBootStateと現在のディスプレイ解像度かどうかを判断する必要があります。
以下のコマンドでこれらの値を決定しました…
マクロウィンドウの記録10
$TPMVersion = (((Get-WmiObject -Namespace 'rootcimv2securitymicrosofttpm' -Class win32_tpm -ErrorAction Stop).SpecVersion) -split (','))[0] #This command requires PS to open as Administrator $FirmwareType = $env:firmware_type $SecureBootState = Confirm-SecureBootUEFI -ErrorAction Stop #This command requires PS to open as Administrator $GraphicsResolution = (Get-WmiObject win32_VideoController).CurrentVerticalResolution読者の1人であるBruceK Andersonは、TPMVersionを決定するために使用したwin32_tpmプロパティが間違っていると指摘しました。彼は、元のスクリプトで使用したPhysicalPresenceVersionInfoプロパティの代わりにSpecVersionを使用することを推奨しました。この変更を反映するようにスクリプトを更新しました。最終レポートの計算
Windows 11互換性チェッカーの最終結果は、3つの部分に分かれています。結果は次のようになります。
結果の最初の部分には、コンピューターの現在の仕様が表示されます。このレポートは、前のセクションで計算された仕様をまとめたものです。
次に、レポートの2番目の部分が表示されます Windows11のシステム要件 。最後に、3番目の部分は実際のWindows11の互換性です。
3つの結果を生成するために使用した方法は似ています。 3つのレポートの完全なスクリプトは次のとおりです。
$Report = '' | Select-Object -Property 'Computer Name', 'Processor Speed (GHz)', 'Number Of CPU Cores', 'RAM Size(GB)', ` 'Free Disk Space (GB)', 'TPM Version', 'Firmware Type', 'SecureBoot Enabled', 'Graphics Resolution' #creates an empty reports $Report.'Computer Name' = $env:COMPUTERNAME $Report.'Processor Speed (GHz)' = $CurrentClockSpeed $Report.'Number Of CPU Cores' = $NumberOfCores $Report.'RAM Size(GB)' = $RAMSize $Report.'Free Disk Space (GB)' = $FreeSpace $Report.'Firmware Type' = $FirmwareType $Report.'SecureBoot Enabled' = $SecureBootState $Report.'TPM Version' = $TPMVersion $Report.'Graphics Resolution' = $GraphicsResolution #Generate report based on parameter entered by user If ($ExportToTextFile) Out-File -FilePath $TextFileReportPath -NoNewline -Append 'Your Computer's Specs:' ElseIf ($PassThru) Out-File -FilePath $TextFileReportPath -Append 'Your Computer's Specs:' Else { Write-Host '' Write-Host 'Your Computer's Specs:' Write-Host '======================' -NoNewline $Report } #Windows 11 system requirements $Win11Report = '' | Select-Object -Property 'Processor Speed (GHz)', 'Number Of CPU Cores', 'RAM Size(GB)', ` 'Free Disk Space (GB)', 'TPM Version', 'Firmware Type', 'SecureBoot Enabled', 'Graphics Resolution' $Win11Report.'Processor Speed (GHz)' = '1' $Win11Report.'Number Of CPU Cores' = '2' $Win11Report.'RAM Size(GB)' = '4' $Win11Report.'Free Disk Space (GB)' = '64' $Win11Report.'Firmware Type' = 'UEFI' $Win11Report.'SecureBoot Enabled' = 'True' $Win11Report.'TPM Version' = '2.0' $Win11Report.'Graphics Resolution' = '720' #Write-Host 'Windows 11 System Requirements:' #Write-Host '' If ($ExportToTextFile) #'' ElseIf ($PassThru) Out-File -FilePath $TextFileReportPath -Append -NoNewline $Win11Report Else { Write-Host '' Write-Host 'Windows 11 System Requirements:' Write-Host '===============================' Write-Host ' ' $Win11Report } #Create a final report that compares both specs #System Compatibility Checker Report $CompReport = '' | Select-Object -Property 'Computer Name', 'Processor Speed (GHz)', 'Number Of CPU Cores', 'RAM Size(GB)', ` 'Free Disk Space (GB)', 'TPM Version', 'Firmware Type', 'SecureBoot Enabled', 'Graphics Resolution' $CompReport.'Computer Name' = $env:COMPUTERNAME $CompReport.'Processor Speed (GHz)' = IF ($Report.'Processor Speed (GHz)' -ge $Win11Report.'Processor Speed (GHz)') {'Pass'} Else {'Fail'} $CompReport.'Number Of CPU Cores' = IF ($Report.'Number Of CPU Cores' -ge $Win11Report.'Number Of CPU Cores') {'Pass'} Else {'Fail'} $CompReport.'RAM Size(GB)' = IF ($Report.'RAM Size(GB)' -ge $Win11Report.'RAM Size(GB)') {'Pass'} Else {'Fail'} $CompReport.'Free Disk Space (GB)' = IF ($Report.'Free Disk Space (GB)' -ge $Win11Report.'Free Disk Space (GB)') {'Pass'} Else {'Fail'} $CompReport.'Firmware Type' = IF ($Report.'Firmware Type' -eq $Win11Report.'Firmware Type') {'Pass'} Else {'Fail'} $CompReport.'SecureBoot Enabled' = IF ($Report.'SecureBoot Enabled' -eq $Win11Report.'SecureBoot Enabled') {'Pass'} Else {'Fail'} $CompReport.'TPM Version' = IF ($Report.'TPM Version' -ge $Win11Report.'TPM Version') {'Pass'} Else {'Fail'} $CompReport.'Graphics Resolution' = IF ($Report.'Graphics Resolution' -ge $Win11Report.'Graphics Resolution') {'Pass'} Else {'Fail'} #Write-Host 'Windows 11 Compatibility Checker Report:' #Write-Host '' #$CompReport If ($ExportToTextFile) Out-File -FilePath $TextFileReportPath -Append '========================================' ElseIf ($PassThru) Write-Host '' Write-Host 'Windows 11 Compatibility Checker Report:' Write-Host '=======================================' Write-Host ' ' $CompReport #'' Else { Write-Host '' Write-Host 'Windows 11 Compatibility Checker Report:' Write-Host '=======================================' Write-Host ' ' $CompReport }Windows11互換性チェッカーの制限
SゾーンのWindows11互換性チェッカーには次の制限があります。
- 現在のバージョンは、ローカルコンピューターでのみ実行されます。リモートコンピュータをサポートしていません
- 上記の制限により、複数のコンピューターでツールを実行することはできません。今後のバージョンで、これら2つの制限を修正したいと考えています。これも需要に依存します。
- このツールは、プロセッサの速度のみをチェックします。プロセッサのタイプはチェックしません。そのため、コンパクト化チェッカーがWindows 11用のPCに合格する可能性は限られていますが、それでもインストールに失敗する可能性があります。これは、PCにWindows11プロセッサのコンパクト性リストにないプロセッサが搭載されている場合に発生する可能性があります。
- 最終的な圧縮性の結果は、個々の仕様で合格または不合格を示します。失敗という言葉は誤解を招く可能性があります。必ずしもPCにWindows11をインストールできないという意味ではありません。それは単に、現在の状態では、そうではないかもしれないということを意味します。ほとんどの場合、特定の要件を変更すると、Windows11をインストールできます。
- techguides.comのWindows11互換性チェッカーでは、ツールを実行する前に、管理者としてPowerShellを開く必要があります。これは不便であり、制限が少ないです。
Get-Windows11Compatibilityをダウンロードして使用する方法
以下の手順に従って、SゾーンのWindows11互換性チェッカーをダウンロードして使用します。
- 関数をダウンロードするには、Get-Windows11Compatibility.zipをクリックします
- それで、 ファイルを解凍します 。ダウンロードしたファイルを解凍すると、Get-Windows11Compatibilityというフォルダーが作成されます。
- Get-Windows11CompatibilityフォルダーをWindows10PowerShellモジュールフォルダーにコピーします。
PowerShellモジュールフォルダーはC: Users \ Documents WindowsPowerShell Modulesにあります - それで、 管理者としてPowerShellを開く コンパクト性チェッカーコマンドを実行する前に、次のコマンドを実行します…
Unblock-File C:UsersVictorADocumentsWindowsPowerShellModulesGet-Windows11CompatibilityGet-Windows11Compatibility.psm1ファイルへのフルパスを、手順4でフォルダーをコピーしたPowerShellモジュールフォルダーパスに変更します。
- 最後に、コンパクト性チェッカーを実行するには、以下のコマンドを実行します…
Get-Windows11Compatibility
このコマンドは、PowerShellコンソールに結果を表示します…
または、このコマンドを使用してレポートをテキストファイルに保存することもできます…
Get-Windows11Compatibility -ExportToTextFile -ReportPath 'D:Log Files'
コマンドが実行され、レポートが保存されている場所が通知されます。
最後に、PowerShellコンソールに結果を表示し、コピーをテキストファイルに保存するには、次のコマンドを実行します…
Get-Windows11Compatibility -PassThru -ReportPath 'D:Log Files'
Windows 11互換性チェッカーツールがお役に立てば幸いです。役に立ったと思ったら、親切に投票してください はい この投稿は役に立ちましたか?
このツールで考えを共有したり、カスタマイズをリクエストしたりすることもできます。あなたの考えを共有したり、カスタマイズリクエストを男性に伝えたりするには、ページの下部にあるLEAVE AREPLYフォームを使用してください。
最後に、Windows 11の詳細については、ページにアクセスしてください。


