Découvrez la version Windows de la ligne de commande utilisateur non privilégiée

J’ai besoin d’un moyen de savoir quelle version de Windows j’utilise en utilisant des outils en ligne de commande simples (pas de PowerShell). J’en ai besoin pour travailler avec un utilisateur non privilégié, et je dois pouvoir parsingr la différence entre Windows XP, Vista, serveur 2008 et 7. J’utilise actuellement: wmic os get Caption mais cela échoue lorsque le l’utilisateur n’a pas l’autorisation d’exécuter wmic.

Mise à jour: pour clarifier, j’ai besoin de cette commande pour ne pas rompre avec différents niveaux de service pack, etc., ce qui exclut probablement l’parsing d’un numéro de version spécifique. Aussi, si vous regardez cette liste de versions de Windows, vous verrez que les chiffres rapportés sur Windows 7 et le serveur 2008 R2 sont les mêmes.

J’ai résolu ce problème en analysant le résultat de:

 reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName" 

La commande systeminfo montre tout ce qui concerne la version OS, y compris le numéro du Service Pack et l’édition que vous utilisez.

 C:\>systeminfo | findstr /B /C:"OS Name" /C:"OS Version" OS Name: Microsoft Windows 7 Enterprise OS Version: 6.1.7601 Service Pack 1 Build 7601 

Référence: Rechercher la version de Windows à partir de l’invite de commande

Vous pouvez utiliser ver . Je suis sur un ordinateur scolaire avec une invite de commandes non privilégiée, et cela me donne Microsft Windows [Version 6.1.7601] . Je suis sûr que vous pourrez sortinger Vista et XP du nombre que vous obtenez.

cmd affiche la version de Windows au démarrage:

 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\Joey>_ 

C’est aussi une ligne similaire à celle que le ver crache, en effet.

Une option pourrait alors être

 echo exit|cmd|findstr Windows 

un autre

 cmd /c ver 

selon que vous avez un pipeline ou non.

 if not CMDEXTVERSION 2 ( echo Error: This batch requires Command Extensions version 2 or higher exit /b 1 ) FOR /F "usebackq tokens=4 delims=] " %%I IN (`ver`) DO for /F "tokens=1,2 delims=." %%J IN ("%%I") do set WindowsVersion=%%J.%%K if "%WindowsVersion%" LSS "6.1" ( echo Error: This batch requires Windows 7 SP1 or higher exit /b 1 ) 

Vous pouvez obtenir les SysInternals et les installer sur votre répertoire C: \. Ensuite, vous pouvez accéder à une invite de commande et utiliser la commande PSINFO.

C’est génial car cela me permet d’interroger n’importe quel PC sur le réseau (auquel j’ai access). À l’invite de commande, tapez: PSINFO \ exactnameofcomputer

(PSINFO whack whack exactnameofcomputer)

Puis appuyez sur Entrée. Il faudra un moment ou deux pour rendre compte, selon l’emplacement de l’ordinateur.