Question
[Résolu] Get-Item et Get-ItemPropertyValue
- Alban LAMBERTY
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 7 ans 1 mois #28177
par Alban LAMBERTY
[Résolu] Get-Item et Get-ItemPropertyValue a été créé 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
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.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 1 mois #28180
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Get-Item et Get-ItemPropertyValue
Bonjour Alban
Il est préférable - dans ton cas - de passer par la commande [code:1]Get-ItemProperty \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\"[/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
Il est préférable - dans ton cas - de passer par la commande [code:1]Get-ItemProperty \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\"[/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.
- Alban LAMBERTY
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 7 ans 1 mois #28183
par Alban LAMBERTY
Réponse de Alban LAMBERTY sur le sujet Re:Get-Item et Get-ItemPropertyValue
Bonjour Arnaud et merci pour ta réponse rapide.
Effectivement la piste Get-ItemProperty est bien meilleure.
Si je fais :
[code:1]Get-ItemProperty \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\" -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 :
Je me suis donc dirigé vers un Select de cette façon:
[code:1]Get-ItemProperty \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\" | Select ProductName,ReleaseID,CurrentBuildNumber[/code:1]
Et là c'est parfait.
Effectivement la piste Get-ItemProperty est bien meilleure.
Si je fais :
[code:1]Get-ItemProperty \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\" -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 :
j'ai essayé de trouver un paramètre à passer afin que les lignes \"PSPath\", \"PSParentPath\", \"PSChildName\", \"PSDrive\" et \"PSProvider\" n'apparaissent pas.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
Je me suis donc dirigé vers un Select de cette façon:
[code:1]Get-ItemProperty \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\" | Select ProductName,ReleaseID,CurrentBuildNumber[/code:1]
Et là c'est parfait.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 1 mois #28202
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Get-Item et Get-ItemPropertyValue
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
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.047 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Get-Item et Get-ItemPropertyValue