Använd vår Windows 11-kompatibilitetskontroll för att kontrollera om din dator kan installera Windows 11

23 september 2021 919 Visningar Använd vår Windows 11-kompatibilitetskontroll för att kontrollera om din dator kan installera Windows 11

Baserat på hårdvarukrav för Windows 11 byggde S Zone en Windows 11-kompatibilitetskontroll (Get-Windows11Compatibility) baserad på PowerShell för att hjälpa dig kontrollera om din dator kan installera Windows 11.





Du kanske är medveten om att du kanske kan uppgradera din Windows 10-dator till Windows 11 gratis. Men för att göra detta måste du ha en giltig Windows 10-licens.



Dessutom MÅSTE din PC uppfylla minimikraven för att installera Windows 11. Det är därför vi byggde det här verktyget – för att hjälpa dig att kontrollera om du kan installera Windows 11 på din nuvarande dator.

I den här korta guiden får du lära dig hur vi utvecklade det här verktyget. Dessutom förklarar guiden hur du kör rapporten och verktygets begränsningar.



Bläddra bland inläggsämnen



S Zones Windows 11 Compatibility Checker Script (Get-Windows11Compatibility) förklaras

S Zones Windows 11 Compatibility Checker Script (Get-Windows11Compatibility) förklaras

Som jag antydde i min introduktion är det här verktyget byggt på PowerShell. I det här avsnittet kommer jag att förklara skriptet bakom verktyget. Det här avsnittet är främst för Windows SysAdmins som vill lära sig PowerShell.

Så om du bara vill ladda ner och använda verktyget kan du hoppa över det här avsnittet.



Get-Windows11Kompatibilitetsparametrar

Koden nedan visar parameterdefinition av Windows 11-kompatibilitetskontrollen. För att göra det lätt för dig att upptäcka, har jag preciserat parametrarna.



|_+_|

Som du kan se finns det fyra parametrar – Visa Resultat , ExportToTextFile , Passera igenom , och ReportPath .

Jag kommer att förklara parametrarna i de kommande underavsnitten

DisplayResult Parameter

De Visa Resultat parameter är en switch parameter. Detta betyder att för att säga åt Windows 11-kompatibilitetskontrollen att använda den här parametern, anropar du den utan att lägga till några värden.

Så här definierade vi denna parameter...

|_+_|

Du skulle också ha märkt att parametern tillhör ParameterSetName som kallas 'DisplayResult'. Innebörden av detta är att du bara kommer att ringa till Visa Resultat parameter med andra parametrar i denna parameteruppsättning.

Som du kommer att se när jag förklarar skriptet bakom verktyget, använd Visa Resultat parameter för att visa resultatet av Windows 11-kompatibilitetskontrollen på PowerShell-konsolen.

ExportToTextFile Parameter

Detta är också en switchparameter. Den tillhör ett annat ParameterSetName som heter 'ExportToTextFile'. Det betyder att du inte kan använda den här parametern i samma kommando som Visa Resultat parameter

Här är koden som definierar denna parameter...

|_+_|

När du anropar denna parameter, Skaffa-Windows11-kompatibilitet kommer att spara resultatet av din dators kompatibilitetsrapport till en textfil. Baserat på detta måste du ange en annan parameter, ReportPath .

De ReportPath används för att ange mappsökvägen där du vill spara din Windows 11 Compatibility Checker-kompatibilitetsrapport. Mer om denna parameter senare.

Tillbaka till ExportToTextFile parameter, som jag nämnde tidigare, är detta också en switch parameter. När du anger det kräver det inga värden.

När du anger denna parameter och ReportPath parameter, Skaffa-Windows11-kompatibilitet kommer att exportera rapporten till den sökväg du angav i ReportPath parameter.

PassThru-parameter

De Passera igenom parametern visar resultatet av Windows 11-kompatibilitetskontrollen på PowerShell-konsolen. Dessutom sparar den resultatet i en textfil.

Här är koden vi använde för att skapa denna parameter...

|_+_|

Följer samma logik som i ExportToTextFile Parameter, om Passera igenom parametern sparar resultatet av kommandot i en textfil, du måste ange en sökväg för att spara textfilen.

Innebörden är att du också måste ange sökvägen för att spara textfilsrapporten med ReportPath parameter.

Den här parametern tillhör ett annat ParameterSetName som heter 'PassThru'.

Hittills har vi definierat 3 ParameterSetNames - Visa Resultat , ExportToTextFile , och Passera igenom .

ReportPath-parameter

Detta är den fjärde och sista parametern. Som du kan se av koden nedan är det en strängparameter.

|_+_|

Som du kanske redan har dragit slutsatsen, till skillnad från en switch-parameter, kräver en strängparameter en post från dig, användaren.

En annan viktig sak att notera om ReportPath parametern är att den krävs i ExportToTextFile , och Passera igenom kommandon. Detta betyder också att den här parametern tillhör deras respektive ParameterSetNames – ExportToTextFile , och Passera igenom .

Se hur jag definierar ParameterSetNames i ReportPath parameterkod nedan...

|_+_|

För att lära dig mer om PowerShell-parametrar, läs vår fullständiga guide om ämnet – PowerShell Param: Syntax, typer, attribut, argument och exempel .

Skriptet Windows 11 Compatibility Checker (Get-Windows11Compatibility).

Get-Windows11Compatibility-skriptet är uppdelat i två sektioner. I det första avsnittet genererade vi de olika resultaten som krävdes.

Specifikationer Resultatkod

Koden nedan visar hela koden i det första avsnittet...

|_+_|

I första hand slog jag in koden i en Prova, Catch block så att jag kan fånga och hantera fel. Sedan använde jag följande koder för att kontrollera datorns specifikationer:

|_+_|

Den första raden får processorinformationen och sparar informationen kallas en variabel Processor . Jag behöver den här informationen eftersom det är ett nyckelelement i Windows 11-kompatibilitetskontrollen.

Sedan, på den andra raden, extraherade jag MaxClockSpeed ​​för processorn.

Jag bestämde mig för att inte använda den här specifikationen så småningom men lämnade koden i skriptet ifall jag bestämmer mig för att använda den senare.

På rad 3 sparade jag den aktuella klockhastigheten till processorn i en variabel som heter CurrentClockSpeed. Detta resultat returneras i Hz.

Så, för att konvertera det från Hz till GHz, slog jag in $Processor.CurrentClockSpeed (processorhastigheten i Hz) i en PowerShell [math]::round-funktion.

|_+_|

Detta avrundar resultatet till ett definierat antal decimaler. I det här fallet använde jag 1 decimal avrundning uppåt. Men för att konvertera processorhastigheten från Hz till GHz delade jag $Processor.CurrentClockSpeed med 1000.

Här är den sista koden.

|_+_|

Jag returnerade också antalet CPU-kärnor i processorn med kommandot nedan.

|_+_|

Resultaten av dessa koder markeras i skärmdumpen nedan ... Mer om hur jag genererade detta senare.

Skriptet för Windows 11 Compatibility Checker (Get-Windows11Compatibility).

Om du går vidare från processorspecifikationskoden genererar koden nedan RAM-specifikationerna (minne) för PC:n.

|_+_|

I likhet med processorkoden använder den här koden Get-WmiObject PowerShell-kommandot för att extrahera lite information om datorn. Ett av resultaten i detta kommando är TotalPhysicalMemory fast egendom.

Detta är det totala RAM-minnet på datorn, returnerat i byte. Återigen, som processorspecifikationerna, för att konvertera detta från byte till gigabyte, dividerade jag det med 1 GB (1024 byte).

Slutligen, för att avrunda siffrorna uppåt, slog jag in hela resultatet i en PowerShell [math]::round-funktion. Resultatet visas i den markerade delen av den här skärmdumpen.

Efter att ha fått processorn och RAM-specifikationerna för PC:n har jag nästa en kod som bestämmer det aktuella lediga utrymmet på datorn. Återigen är detta en del av Windows 11-systemkravet och därför en del av Windows 11-kompatibilitetskontrollen.

Jag använde koden nedan för att slutföra denna uppgift...

|_+_|

På den första raden (efter kommentarsraden) bestämde jag att partitionen Windows 10 är installerad. Jag använde koden nedan för detta...

|_+_|

Den första delen av koden använde PowerShell $Env:windir variabel för att returnera OS-partitionen. Sedan använde jag egenskapen split för att dela upp resultatet i två delar.

För att göra det lätt för dig att förstå, här är resultatet av...

|_+_| Det slutliga resultatet av Windows 11-kompatibilitetskontrollen är i tre delar

PowerShell split-egenskapen går sönder C:WINDOWS i två arrayer, C , och WINDOWS . Men jag behöver bara enhetsbeteckningen.

För att returnera enhetsbokstaven (den första delen av arrayen) lade jag till [0] i slutet av föregående kommando...

PowerShell-arrayer räknar medlemmar av arrayen från 0. |_+_|

Som du kan se returnerade kommandot enhetsbokstaven utan standardkolonet (:). För att tillägga det inkluderade jag kolon manuellt...

|_+_| Begränsningar för Windows 11-kompatibilitetskontrollen

Om du undrar varför jag gick igenom alla problem för att bestämma partitionsbokstaven som operativsystemet är installerat, här är varför. Jag behöver det i mitt nästa kommando...

För att markera hur det här kommandot relaterar till det sista, inkluderade jag båda kommandona nedan. |_+_|

En del av systemkraven för Windows 11 är det lediga utrymmet på datorn. Därför är detta en av specifikationerna som vår Windows 11-kompatibilitetskontroll returnerar.

I skriptet ovan använde jag Get-WmiObject kommandot för att returnera diskinformationen på den lokala datorn. Sedan skickade jag resultatet till Var-Objekt och filtrerade utgången med DeviceID från föregående kommando.

|_+_|

När jag körde kommandot på min dator, returnerade det resultatet som visas i skärmdumpen nedan.

Som du kan se från skärmdumpen returnerade kommandot en egenskap som heter Ledigt utrymme , i byte. För att konvertera denna värde till Gigabyte måste jag dividera värdet med 1GB.

Sedan, för att avrunda värdet, måste jag använda [matte]::runda fungera. Nollan (0), som är märkt i skriptet nedan är antalet siffror som ska rundas av värdet.

|_+_|

Slutligen bestämde jag TPM-versionen, den aktuella firmware som datorn stöder (BIOS eller UEFI). Jag måste också avgöra om SecureBootState och den aktuella skärmupplösningen.

Jag bestämde dessa värden med kommandona nedan...

|_+_| En av våra läsare, Bruce K Anderson, påpekade att egenskapen win32_tpm som jag använde för att fastställa TPMVersion är fel. Han rekommenderade att jag skulle använda SpecVersion istället för egenskapen PhysicalPresenceVersionInfo som jag använde i det ursprungliga skriptet. Jag har uppdaterat skriptet för att återspegla denna förändring.

Beräkning av slutrapporterna

Det slutliga resultatet av Windows 11-kompatibilitetskontrollen är i tre delar. Så här ser resultatet ut.

Det slutliga resultatet av Windows 11-kompatibilitetskontrollen är i tre delar

Den första delen av resultatet visar datorernas aktuella specifikationer. Denna rapport är en sammanställning av de specifikationer som beräknades i det sista avsnittet.

Sedan visas den andra delen av rapporten Systemkrav för Windows 11 . Slutligen är den tredje delen den faktiska Windows 11-kompatibiliteten.

Metoden jag använde för att generera de tre resultaten är liknande. Här är hela manuset till de tre rapporterna:

|_+_|

Begränsningar för Windows 11-kompatibilitetskontrollen

Det slutliga resultatet av Windows 11-kompatibilitetskontrollen är i tre delar

S Zones Windows 11-kompatibilitetskontroll har följande begränsningar:

  1. Den aktuella versionen körs endast på den lokala datorn. Den stöder inte en fjärrdator
  2. Baserat på begränsningen som anges ovan kan du inte köra verktyget på flera datorer. Vi hoppas kunna fixa dessa två begränsningar i efterföljande versioner. Detta kommer också att bero på efterfrågan.
  3. Verktyget kontrollerar bara processorns hastighet. Den kontrollerar inte typen av processor. Så det finns en begränsad chans att komprimeringskontrollen kan passera din dator för Windows 11 men det kan fortfarande misslyckas med installationen. Detta kan hända om din dator har en processor som inte finns i Windows 11-processorns komprimeringslista.
  4. Det slutliga komprimeringsresultatet visar Godkänt eller Underkänd i de individuella specifikationerna. Ordet misslyckas kan vara missvisande. Det betyder inte nödvändigtvis att du inte kommer att kunna installera Windows 11 på datorn. Det betyder helt enkelt att du inte får göra det under nuvarande tillstånd. I de flesta fall kan du installera Windows 11 genom att ändra det specifika kravet.
  5. techguides.com:s Windows 11-kompatibilitetskontroll kräver att du öppnar PowerShell som administratör innan du kör verktyget. Detta är mer av en olägenhet och mindre av en begränsning.

Hur man laddar ner och använder Get-Windows11-kompatibilitet

Följ stegen nedan för att ladda ner och använda S Zones Windows 11-kompatibilitetskontroll:

  1. För att ladda ner funktionen, klicka på Get-Windows11Compatibility.zip
  2. Sedan, packa upp filen . När du packar upp den nedladdade filen kommer den att skapa en mapp som heter Get-Windows11Compatibility.
  3. Kopiera mappen Get-Windows11Compatibility till din Windows 10 PowerShell-modulmapp.

    Din PowerShell-modulmapp finns i C:Users\DocumentsWindowsPowerShellModules
  4. Sedan, öppna PowerShell som administratör och kör följande kommandon innan du kör kommandot komprimeringskontroll...
|_+_| Ändra hela sökvägen till filen till din PowerShell Modules-mappsökväg som du kopierade mappen i steg 4
  1. Slutligen, för att köra komprimeringskontrollen, kör kommandot nedan...
|_+_|

Detta kommando visar resultatet på PowerShell-konsolen...

Alternativt kan du spara rapporten i en textfil med detta kommando...

|_+_|

Kommandot körs och informerar dig var rapporten sparas.

Slutligen, för att visa resultatet på PowerShell-konsolen och spara en kopia till en textfil, kör kommandot nedan...

|_+_|

Jag hoppas att du tyckte att vårt Windows 11 Compatibility Checker-verktyg var användbart? Om du tyckte att det var användbart, vänligen rösta Ja till Var det här inlägget till hjälp?.

dramago inte i superrepo

Du kan också dela dina tankar med det här verktyget eller göra en anpassningsförfrågan. För att dela dina tankar eller göra en anpassningsförfrågan, använd LÄMNA ETT SVAR-formuläret längst ner på sidan.

Slutligen, för att lära dig mer om Windows 11, besök sidan .