Depuis l'arrivée de Microsoft Windows Vista, Microsoft sait s’adapter aux différents composants et exploiter certaines fonctionnalités matérielles. WinSAT peut être aussi utilisé pour savoir si la carte graphique est compatible avec l’interface Aero et donc l’activer. L’outil n'est pas exécuté automatiquement lors d'un changement de matériel. Il est accessible dans les panneaux de configuration où il fournit une note de 1 à 5.9 à votre PC (la valeur maximale pourra être mise à jour si les périphériques dépassent de trop cette valeur). Les jeux sous Vista peuvent profiter de ce système et préciser la note minimum et la note recommandée pour pouvoir jouer. Ce n’est cependant qu’à titre d’informations et rien n’empêche de jouer si les prérequis ne sont pas présents. Chaque grade correspond selon Microsoft à un type de recommandation matérielle. Certaines recommandations semblent contradictoires, c'est pourquoi le détail ne figure pas dans la liste ci-dessous.
Grade 1 : Ce grade correspond au minimum matériel requis pour l'exécution du système d'exploitation. Un ordinateur de ce type ne pourra être destiné qu'à des applications simples comme la bureautique ou la navigation sur Internet.
Grade 2 : Ce deuxième grade correspond à un ordinateur permettant d’effectuer les mêmes tâches qu'un ordinateur de Grade 1 mais dans des conditions, plus agréables. Ce second grade est identique au Grade 1 auquel s'ajouterait du multimédia sans pour autant atteindre la haute-définition. À noter que la non-conformité de la carte graphique DirectX 9 ne permettra pas à ce type de machine d'exécuter Aero dans de bonnes conditions. On peut toutefois, et malgré les recommandations de l'équipe de développement, forcer son exécution. Cela engendrera une baisse significative des performances, la grande majorité des effets appliqués n’étant pas gérés par le GPU.
Grade 3 : Voici l'ordinateur qui sert de base à la réception du logo Argent pour Vista. Il s'agit du modèle standard d'exécution de l'environnement du système d'exploitation. Ces ordinateurs pourront faire fonctionner la majorité des applications actuelles, y compris en haute-définition, suivant la résolution désirée et les caractéristiques précises de l'ordinateur.
Grade 4 : Ce grade désigne les ordinateurs sur lesquels le système d'exploitation s'exécutera dans de très bonnes conditions. Cette configuration correspond approximativement aux ordinateurs neufs d'entrée de gamme en avril 2006. Ces ordinateurs exécuteront Aero Glass correctement avec activation de la composition de l’affichage. Ils pourront faire fonctionner dans de bonnes conditions les éléments de Windows Media Center dans le cas d'une configuration à 2 tuners au plus. Le streaming haute-définition ne sera pas non plus géré. Les éléments déterminants véritablement de cette configuration restent la quantité de mémoire vive et la puissance de la carte graphique.
Grade 5 : Sur ces configurations, Le système d'exploitation s’exécutera avec le maximum d’effets et au maximum de ses possibilités. Ce type d'ordinateurs correspond au haut de gamme en juin 2006. Les ordinateurs qui sortiront par la suite et qui seront encore plus puissants resteront à ce grade de 5, reflétant globalement les possibilités intrinsèques de la machine.
Si cette étape était obligatoire sous Windows 7, même si l'on pouvait la passer via un fichier réponse. Depuis il faudra passer cette commande sous Windows pour lancer cette :
1 |
winsat formal>>c:\windows\temp\WinSat.log |
Récupérer simplement les résultats
1 |
get-wmiobject Win32_WinSAT | SELECT-OBJECT CPUScore, MemoryScore, GraphicsScore, D3DScore, DiskScore, WinSPRLevel |
1 |
Get-WmiObject -ComputerName 127.0.0.1 win32_winsat | SELECT-OBJECT CPUScore, MemoryScore, GraphicsScore, D3DScore, DiskScore, WinSPRLevel |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
[xml]$gl_szXaml = @" <Window Title="Windows Experience Index (WEI) Scores" Width="333" Height="451" Background="lightgray" WindowStartupLocation="CenterScreen" Topmost="True" ResizeMode="NoResize" ShowInTaskbar="True"> <StackPanel> <Grid Margin="3"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <TextBlock Grid.Column="0" Grid.Row="1" Text="CPU:" FontWeight="Bold" Margin="3" /> <TextBlock Grid.Column="0" Grid.Row="2" Text="RAM:" FontWeight="Bold" Margin="3" /> <TextBlock Grid.Column="0" Grid.Row="3" Text="Graphics:" FontWeight="Bold" Margin="3" /> <TextBlock Grid.Column="0" Grid.Row="4" Text="Gaming graphics:" FontWeight="Bold" Margin="3" /> <TextBlock Grid.Column="0" Grid.Row="5" Text="Primary hard disk:" FontWeight="Bold" Margin="3" /> <TextBlock Grid.Column="0" Grid.Row="6" Text="Global Indicator:" FontWeight="Bold" Margin="3" /> <TextBlock Grid.Column="1" Grid.Row="0" Text="Initial" FontWeight="Bold" Margin="3" /> <TextBox x:Name="tbCpuScoreCurr" Grid.Column="1" Grid.Row="1" Text="{Binding CPUSCORE}" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbRamScoreCurr" Grid.Column="1" Grid.Row="2" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbGraphScoreCurr" Grid.Column="1" Grid.Row="3" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbGraphGamingScoreCurr" Grid.Column="1" Grid.Row="4" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbHddScoreCurr" Grid.Column="1" Grid.Row="5" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbWinSPRLevelScoreCurr" Grid.Column="1" Grid.Row="6" IsReadOnly="True" Margin="3" /> <TextBlock Grid.Column="2" Grid.Row="0" Text="Recent" FontWeight="Bold" Margin="3" /> <TextBox x:Name="tbCpuScoreNew" Grid.Column="2" Grid.Row="1" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbRamScoreNew" Grid.Column="2" Grid.Row="2" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbGraphScoreNew" Grid.Column="2" Grid.Row="3" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbGraphGamingScoreNew" Grid.Column="2" Grid.Row="4" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbHddScoreNew" Grid.Column="2" Grid.Row="5" IsReadOnly="True" Margin="3" /> <TextBox x:Name="tbWinSPRLevelScoreNew" Grid.Column="2" Grid.Row="6" IsReadOnly="True" Margin="3" /> </Grid> <TextBox x:Name="tbParms" /> <Button x:Name="bttnRun" Content="Re-Run" /> <ListBox x:Name="lbStatus" MinHeight="200" MaxHeight="200" /> </StackPanel> </Window> "@ ##### ## Funcs ##### function Get-WinSAT-Report-Latest-Name () { $oFile = Get-ChildItem $gl_szWinSATReportPath | Sort-Object LastWriteTime -descending | Select-Object Name | Select-String -pattern "Formal.Assessment" | Select-Object -First 1 return $oFile.Line } function Wait-For-WinSAT-Report () { $szOldName = Get-WinSAT-Report-Latest-Name do { Start-Sleep -s 10 $szNewName = Get-WinSAT-Report-Latest-Name } while ($szOldName -eq $szNewName) } function Set-Gui-Scores-Curr () { $tbCpuScoreCurr = $gl_oWnd.FindName("tbCpuScoreCurr") $tbRamScoreCurr = $gl_oWnd.FindName("tbRamScoreCurr") $tbGraphScoreCurr = $gl_oWnd.FindName("tbGraphScoreCurr") $tbGraphGamingScoreCurr = $gl_oWnd.FindName("tbGraphGamingScoreCurr") $tbHddScoreCurr = $gl_oWnd.FindName("tbHddScoreCurr") $tbWinSPRLevelScoreCurr = $gl_oWnd.FindName("tbWinSPRLevelScoreCurr") $oScoresCurr = Get-WmiObject Win32_WinSat | SELECT-OBJECT CPUScore, MemoryScore, GraphicsScore, D3DScore, DiskScore, WinSPRLevel $tbCpuScoreCurr.DataContext = $oScoresCurr $tbRamScoreCurr.Text = $oScoresCurr.MEMORYSCORE $tbGraphScoreCurr.Text = $oScoresCurr.GRAPHICSSCORE $tbGraphGamingScoreCurr.Text = $oScoresCurr.D3DSCORE $tbHddScoreCurr.Text = $oScoresCurr.DISKSCORE $tbWinSPRLevelScoreCurr.Text = $oScoresCurr.WinSPRLevel } function Set-Gui-Scores-New () { $tbCpuScoreNew = $gl_oWnd.FindName("tbCpuScoreNew") $tbRamScoreNew = $gl_oWnd.FindName("tbRamScoreNew") $tbGraphScoreNew = $gl_oWnd.FindName("tbGraphScoreNew") $tbGraphGamingScoreNew = $gl_oWnd.FindName("tbGraphGamingScoreNew") $tbHddScoreNew = $gl_oWnd.FindName("tbHddScoreNew") $tbWinSPRLevelScoreNew = $gl_oWnd.FindName("tbHddScoreNew") $oScoresNew = Get-WmiObject Win32_WinSat | SELECT-OBJECT CPUScore, MemoryScore, GraphicsScore, D3DScore, DiskScore, WinSPRLevel $tbCpuScoreNew.Text = $oScoresNew.CPUSCORE $tbRamScoreNew.Text = $oScoresNew.MEMORYSCORE $tbGraphScoreNew.Text = $oScoresNew.GRAPHICSSCORE $tbGraphGamingScoreNew.Text = $oScoresNew.D3DSCORE $tbHddScoreNew.Text = $oScoresNew.DISKSCORE $tbWinSPRLevelScoreNew.Text = $oScoresNew.WinSPRLevel $szMsg = "CPU: {0}, RAM: {1}, GRF: {2}, Gaming GRF: {3}, HDD: {4}, SCORE: {5}" -f $oScoresNew.CPUSCORE, $oScoresNew.MEMORYSCORE, $oScoresNew.GRAPHICSSCORE, $oScoresNew.D3DSCORE, $oScoresNew.DISKSCORE, $oScoresNew.WinSPRLevel Set-Gui-Status ($szMsg) } function Set-Gui-Status ($szMsg) { $lbStatus = $gl_oWnd.FindName("lbStatus") $lbStatus.Items.Add($szMsg) } ##### ## Main ##### $gl_szSysRoot = [environment]::GetEnvironmentVariable("systemroot") $gl_szWinSATReportPath = "$gl_szSysRoot\Performance\WinSAT\DataStore" Add-Type -As PresentationFramework $gl_oReader=(New-Object System.Xml.XmlNodeReader $gl_szXaml) $gl_oWnd=[Windows.Markup.XamlReader]::Load($gl_oReader) Set-Gui-Scores-Curr $gl_bttnRun = $gl_oWnd.FindName("bttnRun") $gl_bttnRun.Add_Click({ $oStartTS = Get-Date Set-Gui-Status ("Test started: " + $oStartTS) $gl_oWnd.Topmost = $false $szCmd = "winsat formal "+ $gl_oWnd.FindName("tbParms").Text Set-Gui-Status ("cmd: "+ $szCmd) Invoke-Expression ($szCmd) Wait-For-WinSAT-Report $gl_oWnd.Topmost = $true Set-Gui-Scores-New $oEndTS = Get-Date Set-Gui-Status ("Test completed: " + $oEndTS) $oElapsedTime = $oEndTS - $oStartTS Set-Gui-Status ("Elapsed time: {0}:{1}:{2}.{3}" -f $oElapsedTime.Hours, $oElapsedTime.Minutes, $oElapsedTime.Seconds, $oElapsedTime.Milliseconds) Set-Gui-Status ("") }) $gl_oWnd.ShowDialog() | Out-Null |