Meilleur auteur de réponses
Récupérer les données d'une valeur du registre

Question
-
Bonjour,
Je suis débutant en powershell et je n'y connais pas grand chose, je souhaiterais pouvoir lire les données d'une valeur de chaîne et exploité ces données.
Ce que je souhaiterais lire c'est cette valeur ci HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\{374DE290-123F-4565-9164-39C4925E467B}
Cela va me permettre de récupérer le chemin d'accès du dossier "Downloads" en fonction des utilisateurs.
Pour lire la valeur j'ai ceci
Get-ItemProperty -path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\" -name "{374DE290-123F-4565-9164-39C4925E467B}"
{374DE290-123F-4565-9164-39C4925E467B} : \\serveur\Users\toto\Downloads PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\ PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer PSChildName : User Shell Folders PSDrive : HKCU PSProvider : Microsoft.PowerShell.Core\Registry
J'aimerais pour réutiliser la valeur "\\serveur\Users\toto\Downloads" mais je n'y arrive pas, j'ai essayer de la mettre comme ci mais sans résultat
$chemin = Get-ItemProperty -path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\" -name "{374DE290-123F-4565-9164-39C4925E467B}"
mon but étant de l'utiliser comme cela pour lister les fichiers du dossier
$chemin = Get-ItemProperty -path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\" -name "{374DE290-123F-4565-9164-39C4925E467B}" Get-ChildItem –Path $chemin –Recurse | Where-Object LastWriteTime –lt (Get-Date).AddDays(-21) | Remove-Item
Auriez-vous une idées pour que cela fonctionne ?
Merci d'avance.
Réponses
-
Je pense que Romain à écraser la fin de sa commande, je la remet proprement ici :
$KeyPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\" $KeyName = "{374DE290-123F-4565-9164-39C4925E467B}" $Chemin = Get-ItemPropertyValue $KeyPath $KeyName
Et avec Get-ItemProperty:
(Get-ItemProperty $KeyPath $KeyName).("{374DE290-123F-4565-9164-39C4925E467B}")
ou
(Get-ItemProperty $KeyPath $KeyName).$KeyName
- Modifié Loïc Veirman vendredi 15 décembre 2017 19:30
- Proposé comme réponse Loïc Veirman vendredi 15 décembre 2017 19:30
- Marqué comme réponse aurel51 lundi 18 décembre 2017 11:05
-
On va proposer un peu mieux dans ce cas... :-)
if ($PSVersionTable.PSVersion.Major -lt 5) { function Get-ItemPropertyValue() { Param ( [parameter()] [String] $Path, [parameter()] [String] $Name ) (Get-ItemProperty -LiteralPath $Path -Name $Name).$Name } } $KeyPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\" $KeyName = "{374DE290-123F-4565-9164-39C4925E467B}" $Target = Get-ItemPropertyValue $KeyPath $KeyName Get-ChildItem –Path $Target –Recurse | Where-Object LastWriteTime –lt (Get-Date).AddDays(-21) | Remove-Item
Il n'y a plus qu'à copier/coller, peu importe ta version de powershell ;-)
- Proposé comme réponse Romain Wager vendredi 15 décembre 2017 19:39
- Modifié Romain Wager vendredi 15 décembre 2017 19:44
- Marqué comme réponse aurel51 lundi 18 décembre 2017 11:04
Toutes les réponses
-
Bonsoir aurel51,
Get-ItemProperty n'est pas adapté pour ce que tu recherches à faire, cette commande récupère toutes les propriétés de ta valeur, si tu utilises powershell v5 je te conseil d'utiliser Get-ItemPropertValue
Autrement, si tu n'as pas powershell v5, tu peux procéder ainsi pour répondre à ton besoin :
$chemin = (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\" -Name "{374DE290-123F-4565-9164-39C4925E467B}")."{374DE290-123F-4565-9164-39C4925E467B}"
Get-ChildItem –Path $chemin –Recurse | Where-Object LastWriteTime –lt (Get-Date).AddDays(-21) | Remove-ItemJ'ai mis Get-ItemProperty entre parenthèse pour prendre une seule propriété à la fin, cette propriété tu peux la voir en affichant la variable $chemin ; tu verras le nom de l'item que tu viens de rechercher, il suffit donc de rajouter un "." puis le nom du -Name :-)
- Proposé comme réponse Romain Wager vendredi 15 décembre 2017 16:46
- Non proposé comme réponse Romain Wager vendredi 15 décembre 2017 16:47
- Proposé comme réponse Loïc Veirman vendredi 15 décembre 2017 19:29
-
Je pense que Romain à écraser la fin de sa commande, je la remet proprement ici :
$KeyPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\" $KeyName = "{374DE290-123F-4565-9164-39C4925E467B}" $Chemin = Get-ItemPropertyValue $KeyPath $KeyName
Et avec Get-ItemProperty:
(Get-ItemProperty $KeyPath $KeyName).("{374DE290-123F-4565-9164-39C4925E467B}")
ou
(Get-ItemProperty $KeyPath $KeyName).$KeyName
- Modifié Loïc Veirman vendredi 15 décembre 2017 19:30
- Proposé comme réponse Loïc Veirman vendredi 15 décembre 2017 19:30
- Marqué comme réponse aurel51 lundi 18 décembre 2017 11:05
-
On va proposer un peu mieux dans ce cas... :-)
if ($PSVersionTable.PSVersion.Major -lt 5) { function Get-ItemPropertyValue() { Param ( [parameter()] [String] $Path, [parameter()] [String] $Name ) (Get-ItemProperty -LiteralPath $Path -Name $Name).$Name } } $KeyPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\" $KeyName = "{374DE290-123F-4565-9164-39C4925E467B}" $Target = Get-ItemPropertyValue $KeyPath $KeyName Get-ChildItem –Path $Target –Recurse | Where-Object LastWriteTime –lt (Get-Date).AddDays(-21) | Remove-Item
Il n'y a plus qu'à copier/coller, peu importe ta version de powershell ;-)
- Proposé comme réponse Romain Wager vendredi 15 décembre 2017 19:39
- Modifié Romain Wager vendredi 15 décembre 2017 19:44
- Marqué comme réponse aurel51 lundi 18 décembre 2017 11:04
-
-