Question [Résolu] Get-Item et Get-ItemPropertyValue

Plus d'informations
il y a 7 ans 1 mois #28177 par Alban LAMBERTY
Bonjour à tous,

J'essaye de trouver comment remonter les infos de version de Windows et des builds grâce à une commande PowerShell.

Sur Win8.1 / Win10 / Win2012R2 / Win2016 je peux faire :
[code:1](Get-Item \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"«»).GetValue('ProductName') ; (Get-Item \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"«»).GetValue('ReleaseID') ; (Get-Item \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"«»).GetValue('CurrentBuildNumber')[/code:1]
Et cela me renvoie bien ma version de Windows et ma Build (même si Win8.1 et Win2012R2 ne connaissent pas 'ReleaseID')

Y a t'il un moyen de simplifier tout ça (sans forcement passer par un script) pour ne lancer qu'une seule ligne de commande sans \";\" ?

J'ai essayé, sans succès, de mettre plusieurs valeurs dans le GetValue, ou d'utiliser le ForEach avec \"$_\" mais je pense que je m'y prends mal.


Sinon, j'ai essayé ceci :
[code:1]Get-ItemPropertyValue \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\" -Name ProductName,ReleaseID,CurrentBuildNumber[/code:1]
Cela marche très bien sur Win10 et Win2016 mais pas sur Win8.1 (erreur car il ne connait pas 'ReleaseID'), mais j'aimais bien la philosophie de n'avoir qu'une ligne de commande à retenir quelque soit l'OS.


Si quelqu'un a une idée je suis preneur.<br><br>Message édité par: Arnaud, à: 15/02/19 09:04

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 1 mois #28180 par Arnaud Petitjean
Bonjour Alban

Il est préférable - dans ton cas - de passer par la commande [code:1]Get-ItemProperty \&quot;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\&quot;[/code:1] et de récupérer ensuite les propriétés une par une car si la propriété n'existe pas, PowerShell ne te retournera pas d'erreur. C'est le fonctionnement normal de PowerShell (par défaut).


Ce qui n'est pas le cas avec la commande [code:1]Get-ItemPropertyValue[/code:1]. En effet, si tu lui passes une propriété qui n'existe pas, elle te retourne une erreur.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 1 mois #28183 par Alban LAMBERTY
Bonjour Arnaud et merci pour ta réponse rapide.

Effectivement la piste Get-ItemProperty est bien meilleure.

Si je fais :
[code:1]Get-ItemProperty \&quot;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\&quot; -Name ProductName,ReleaseID,CurrentBuildNumber[/code:1]
J'obtiens bien les informations espérées.
Cette méthode me convient tout à fait.
Merci beaucoup pour ton aide.

Pour chipoter un peu, comme la commande précédente me renvoyait ceci :

ProductName : Windows Server 2016 Datacenter
ReleaseId : 1607
CurrentBuildNumber : 14393
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT
PSChildName : CurrentVersion
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry

j'ai essayé de trouver un paramètre à passer afin que les lignes \&quot;PSPath\&quot;, \&quot;PSParentPath\&quot;, \&quot;PSChildName\&quot;, \&quot;PSDrive\&quot; et \&quot;PSProvider\&quot; n'apparaissent pas.

Je me suis donc dirigé vers un Select de cette façon:
[code:1]Get-ItemProperty \&quot;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\&quot; | Select ProductName,ReleaseID,CurrentBuildNumber[/code:1]
Et là c'est parfait.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 1 mois #28202 par Arnaud Petitjean
Bonjour Alban,

Oui c'est la bonne démarche, toujours passer par un Select-Object pour ne récupérer QUE les propriétés qui nous intéressent. :)

Et ne surtout pas confondre un Select-Object avec un Format-List ou Format-Table car avec ces dernières l'objet de départ est dénaturé dans le but de s'afficher correctement dans la console PowerShell.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.045 secondes
Propulsé par Kunena