"cmd" récupérer sa config matérielle

Fermé
neo*** Messages postés 3110 Date d'inscription samedi 14 février 2009 Statut Contributeur sécurité Dernière intervention 9 août 2021 - 29 juil. 2021 à 13:30
brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023 - 9 août 2021 à 17:03
Bonjour tout le monde :)

dans le cadre d'une boite à outils "sécurité" que j'ai créé (avec beaucoup d'aide de Barnabe0) ...

j'aimerais y ajouter un truc tout simple mais je buggue ^^

En jonglant avec diverses commandes ou ( en ouvrant "manuellement) c'est longuet !

j'ouvre explorer pour vérifier la capacité du / des disques (rouges ou pas)(ssd hdd)
j'ouvre Winver pour vérifier la version (à jour ou non ; w7 w10 et bientôt 11...?)
j'ouvre la Ram
même pourquoi pas le processeur ^^

j'aimerais tout synthétiser soit
- avoir les infos dans ma fenêtre cmd
- ou me créer un txt sur le bureau qui se supprimerait après fermeture de celui-ci

Merci à tous de vos bonnes idées et belles vacances ;)

4 réponses

brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023 889
29 juil. 2021 à 13:39
Bonjour,

On doit pouvoir faire le tout en utilisant wmic avec les commutateurs appropriés
https://briot-jerome.developpez.com/hardware/tutoriels/identifier-composants-ordinateur-wmic/
0
neo*** Messages postés 3110 Date d'inscription samedi 14 février 2009 Statut Contributeur sécurité Dernière intervention 9 août 2021 194
29 juil. 2021 à 13:42
merci oui effectivement, j'ai essayé de compiler wmic, systeminfo... mais ça marche pas

par contre j'ai oublié d'aller voir là-bas lol j'y go :p
0
brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023 889
29 juil. 2021 à 14:04
Espace disque: wmic diskdrive get InterfaceType,Manufacturer,MediaType,Model,SerialNumber,Size /value
enlever les critères non souhaités, la taille est en octets et donc à convertir au besoin
Version OS: wmic os get CSDVersion,Manufacturer,Name,OperatingSystemSKU,OSArchitecture,Version /value
même commentaire
CPU: wmic cpu get Manufacturer,Name,SocketDesignation /value
RAM: wmic memorychip get Capacity,FormFactor,Manufacturer,PartNumber,SerialNumber /value
Il suffit ensuite de rediriger les paramètres choisis vers un fichier texte.
0
neo*** Messages postés 3110 Date d'inscription samedi 14 février 2009 Statut Contributeur sécurité Dernière intervention 9 août 2021 194
29 juil. 2021 à 14:23
merci brucine ;)

je jongle bien avec wmic mais impossible de trouver comment savoir (sans décrypter les chiffres lol) si c'est un hdd ou sdd
il me considère mon hdd 1to en IDE ^^ :)
0
brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023 889
29 juil. 2021 à 15:36
wmic ne distingue pas entre hdd et ssd, mais seulement entre fixe et amovible avec d'ailleurs une ambiguïté dans ce dernier cas, puisqu'un RAM disk paramétré comme amovible (c'est un passage obligé notamment pour les GPS) sera considéré comme USB.

Encore que...: la syntaxe wmic diskdrive get caption va (peut-être) nous retourner la solution de manière tordue, mais restant ensuite à extraire la ligne appropriée:

Caption
HGST HDN724030ALE640
Samsung SSD 850 EVO 500GB
Kingston DataTraveler 2.0 USB Device


Exemple d'une telle cuisine (en l'espèce c'est le numéro de série des volumes qui m'intéresse), je me cite moi-même:
wmic logicaldisk where drivetype=2 get name,volumename,volumeserialnumber

J'obtiens un tableau de tous les lecteurs amovibles connectés avec lettre de lecteur, nom de volume et numéro de série; si je souhaite les lecteurs fixes, je remplace 2 par 3; il convient de noter que, je ne sais pas ce qu'il en est des lecteurs virtuels Windows natifs, ceux montés spécifiés amovibles par un logiciel tiers (imdisk) entrent dans la catégorie 2 alors qu'ils devraient être rendus par drivetype=6 (RAM Disk).

Dans un fichier batch, la syntaxe va être un peu différente:

for /f "skip=1 tokens=1,2,3 delims=: " %%a in ('wmic logicaldisk where drivetype^=2 get name^,volumename^,volumeserialnumber^| findstr /v /r "^$"') do (
echo %%a:%%b %%c
)

Même principe, la ligne de titre ne m'intéresse pas (skip=1), je choisis ici de chercher les 3 éléments demandés par drivetype (tokens=1,2,3); le reste est un peu plus vicieux: Les accents circonflexes interdisent à la variable d'être mal interprétée du fait des caractères spéciaux = et |
La pirouette "findstr" interdit au résultat d'afficher une ligne vide au premier lecteur non connecté trouvé


La solution à cet égard passe par Powershell: https://superuser.com/questions/840425/how-do-i-determine-whether-a-drive-is-an-hdd-or-ssd-in-windows-8
0
neo*** Messages postés 3110 Date d'inscription samedi 14 février 2009 Statut Contributeur sécurité Dernière intervention 9 août 2021 194 > brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023
29 juil. 2021 à 18:02
t'es encore plus tordu que moi lol, je m'y colle

merci encore ;)
0
brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023 889 > neo*** Messages postés 3110 Date d'inscription samedi 14 février 2009 Statut Contributeur sécurité Dernière intervention 9 août 2021
29 juil. 2021 à 21:10
Avant d'aller plus loin, il faut que tu définisses précisément ton cahier des charges.
Quelles informations souhaites-tu, dans quel ordre, est-ce qu'on s'intéresse seulement au disque système (c'est plus simple) ou à tous les disques, y compris s'il y existe un multiboot?

Pour prendre le premier exemple idiot, la taille disque brut de coffrage me rend:


C:\Users\bru\Desktop>wmic diskdrive get Size
Size
63861073920
1000202273280

c'est-à-dire dans l'ordre de mes 2 périphériques actuellement connectés et abstraction faite des disques logiques ma carte SD et mon disque dur.
ça te fait une belle jambe, il faut pour le moins peaufiner si tu ne veux retourner que la taille du disque système.
J'ai par ailleurs quelque part dans mes réserves, et si tu as la flemme de le faire, un batch de ma composition qui convertit depuis les Ko jusqu'aux To toutes les valeurs en octet de la création en outrepassant la fameuse limite 2 puissance 32.

Si je m'intéresse à l'espace libre, et à supposer que la partition système s'appelle C: (sans quoi d'ailleurs ce n'est pas grave, on utilisera une variable pour la trouver), par exemple les 2 dernières lignes de la commande DIR sont plus faciles à exploiter:



C:\Users\bru\Desktop>dir c:
Le volume dans le lecteur C s’appelle Windows
Le numéro de série du volume est 1A54-1183

(...)
21 fichier(s) 8 075 084 octets
15 Rép(s) 201 353 515 008 octets libres


puisqu'il suffit de chercher ce qui se trouve après "Rép(s)" mais souffrant d'un aspect purement gaulois puisque si la version Windows est anglaise ou autre, on va échouer.
0
brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023 889 > brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023
Modifié le 30 juil. 2021 à 01:03
Tiens, j'ai fait des devoirs à la maison (partiellement, la base, c'est comme Pulco, c'est moi qui l'a pas fait).
Encore des bugs à corriger puisque la taille est rendue en octets et pas en Go et que je n'arrive pas en "syntaxe française" systeminfo à isoler la mémoire disponible.
Du fait de fsutil, à exécuter en mode administrateur:
NOTE1 01h00: pour mémoire disponible, faute "d'orthographe" corrigée, c'est bon.
Pour la conversion en Go, le batch est d'autant foireux que la césure ne fonctionne que pour une certaine taille disque. Je reviens demain appliquer mon fameux batch de calcul de taille, ça va en rajouter une sacrée couche...



@echo off
CHCP 65001>nul
if %os%==Windows_NT goto WINNT
goto NOCON

:WINNT
echo .Système Windows NT
echo ..%computername%

REM set variables
set system=
set manufacturer=
set model=
set serialnumber=
set osname=
set sp=
setlocal ENABLEDELAYEDEXPANSION
set "volume=C:"
set totalMem=
set availableMem=

echo Recherche en cours [Ordinateur: %computername%]...
echo Veuillez patienter....

REM Nom ordinateur
FOR /F "tokens=2 delims='='" %%A in ('wmic OS Get csname /value') do SET system=%%A

REM Nom fabricant
FOR /F "tokens=2 delims='='" %%A in ('wmic ComputerSystem Get Manufacturer /value') do SET manufacturer=%%A

REM Modèle
FOR /F "tokens=2 delims='='" %%A in ('wmic ComputerSystem Get Model /value') do SET model=%%A

REM Numéro série
FOR /F "tokens=2 delims='='" %%A in ('wmic Bios Get SerialNumber /value') do SET serialnumber=%%A

REM OS
FOR /F "tokens=2 delims='='" %%A in ('wmic os get Name /value') do SET osname=%%A
FOR /F "tokens=1 delims='|'" %%A in ("%osname%") do SET osname=%%A

REM OS Service Pack
FOR /F "tokens=2 delims='='" %%A in ('wmic os get ServicePackMajorVersion /value') do SET sp=%%A

REM Mémoire
FOR /F "tokens=4" %%a in ('systeminfo ^| findstr totale') do (set totalMem=%%a)
set totalMem=%totalMem:,=%
FOR /F "tokens=4" %%b in ('systeminfo ^| findstr disponible') do (set availableMem=%%b)
set availableMem=%availableMem:,=%

FOR /f "tokens=1*delims=:" %%i IN ('fsutil volume diskfree %volume%') DO (
SET "diskfree=!disktotal!"
SET "disktotal=!diskavail!"
SET "diskavail=%%j"
)
FOR /f "tokens=1,2" %%i IN ("%disktotal% %diskavail%") DO SET "disktotal=%%i"& SET "diskavail=%%j"

echo Terminé!

echo --------------------------------------------
echo Nom système: %system%
echo Fabricant: %manufacturer%
echo Modèle: %model%
echo Numéro Série: %serialnumber%
echo OS: %osname%
echo C:\ Espace Total: %disktotal:~0,-9% Go
echo C:\ Espace Disponible: %diskfree:~0,-18% Go
echo Mémoire totale: %totalMem% Mo
echo Mémoire disponible: %availableMem% Mo
echo Processeur: %processor_architecture%
echo Service Pack: %sp%
echo --------------------------------------------

REM sauvegarde texte
SET file="%~dp0%computername%.txt"
echo -------------------------------------------- >> %file%
echo Détails de: %system% >> %file%
echo Fabricant: %manufacturer% >> %file%
echo Modèle: %model% >> %file%
echo Numéro série: %serialnumber% >> %file%
echo OS: %osname% >> %file%
echo C:\ Total: %disktotal:~0,-9% GB >> %file%
echo C:\ Disponible: %diskavail:~0,-9% GB >> %file%
echo Mémoire totale: %totalMem% >> %file%
echo Mémoire disponible: %availableMem% >> %file%
echo Processeur: %processor_architecture% >> %file%
echo Service Pack: %sp% >> %file%
echo -------------------------------------------- >> %file%

REM appuyer sur une touche pour continuer
pause

goto END

:NOCON
echo Error...OS Invalide...
echo Error...Pas de résultat...
goto END

:END

0
neo*** Messages postés 3110 Date d'inscription samedi 14 février 2009 Statut Contributeur sécurité Dernière intervention 9 août 2021 194
8 août 2021 à 13:46
Salut Brucine,

Désolé de ma non-réponse, je n'ai pas eu les notifs du coup, bah passé à côté ^^

Je regarde tout ça ! Merci encore et bon dimanche. :)
0
brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023 889
8 août 2021 à 15:34
Bonjour,

Du coup et si ça t'intéresse, j'ai et avec l'aide de Barnabé le fichier "presque définitif" qui fonctionne de Windows 7 à Windows 10 et qu'il vaudrait peut-être mieux que je mette en ligne plutôt que de mettre ici des lignes au kilomètre.

Il ne résout peut-être pas encore les cas où il y a plus d'un disque dur et d'un SSD, et pas de toute façon celui des paramètres d'une partition non active, non plus qu'il ne dit quelle lettre de lecteur la porte si ce n'est pas C parce que je ne me suis pas intéressé à la question.

Et pas non plus celui où il y aurait plus de 10 Go de RAM et plus de 1 To d'espace disque ou un espace disponible faible, grossièrement moins de 100 Go voire de 10 Go, parce que j'ai eu la flemme d'y mettre les calculs correspondants (l'information initiale est en octets, il faut selon la taille tronquer puis extraire le nombre de chiffres significatifs adéquat).

Résultat dans la version compatible uniquement depuis Windows 8 (et dont l'affichage, passant par une commande Powershell, est plus petit):

0
brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023 889 > brucine Messages postés 8015 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 février 2023
9 août 2021 à 17:03
Puisque je passe par là, mouture la plus récente compatible Windows 7.
Comme dit précédemment, tu diras si tu veux que je trouve un moment pour étendre le calcul à RAM de plus de 10 Go et à espace libre/disponible inférieur à 10 ou 100 Go ou supérieur à 1 voire 2 To.
Et également si tu souhaites d'autres critères qui y sont absents.

https://www.cjoint.com/c/KHjpagjVAoO
0