Question
Export/manipulation de valeurs de base de registre
- FoFo
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 10
- Remerciements reçus 0
ça fait un mois que je me suis mis au powershell et je galere pas mal ...
j'ai fait un bout de cote pour recup le SID des users, je ne veux pas passer par du WMI volontairement...
ça marche, mais mon code donne un peu envie de
j'ai du mal a utiliser les valeurs de la collection $obj genre pas possible de faire du substring and co
des suggestions ?
Merci
[code:1]$RegSid=\"hKEY_LOCAL_MACHINE\Software\Microsoft\windows NT\CurrentVersion\ProfileList\\"
$a=Get-ChildItem -path registry::\"$RegSid\" -recurse
$obj=@()
for ($i =0; $i -lt $a.count; $i++)
{
$Path=$a[$i].name
$Login=Get-ItemProperty -Path Registry::$Path | select -ExpandProperty ProfileImagePath
$sid =Get-ItemProperty -Path Registry::$Path | select -ExpandProperty PSChildName
$d=New-Object PSObject
$d | Add-Member -Name SID -MemberType NoteProperty -Value $sid
$d | Add-Member -Name USERNAME -MemberType NoteProperty -Value $Login
$d | Add-Member -Name Path -MemberType NoteProperty -Value $Path
$obj+=$d
}[/code:1]<br><br>Message édité par: FoFo, à: 12/08/13 16:54
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
FoFo écrit:
Je ne trouve pas, tu peux le simplifier ( sous PS v2) :ça marche, mais mon code donne un peu envie de
..
[code:1]
$RegKeySid=\"hKEY_LOCAL_MACHINE\Software\Microsoft\windows NT\CurrentVersion\ProfileList\\"
$Sids=Get-ChildItem -path registry::\"$RegKeySid\" -recurse
$obj=@(
for ($i =0; $i -lt $Sids.count; $i++)
{
$Path=$Sids[$i].name
$ItemProperty=Get-ItemProperty -Path Registry::$Path
New-Object PSObject -Property @{ SID = $ItemProperty.PSChildName;
USERNAME=$ItemProperty.ProfileImagePath;
Path=$Path
}
}
)
[/code:1]
Ou pour la dernière partie, comme ceci :
[code:1]
$obj=@(
foreach ($Current In Get-ChildItem -path registry::\"$RegKeySid\" -recurse)
{
$Path=$Current.name
$ItemProperty=Get-ItemProperty -Path Registry::$Path
New-Object PSObject -Property @{ SID = $ItemProperty.PSChildName;
USERNAME=$ItemProperty.ProfileImagePath;
Path=$Path
}
}
)
[/code:1]
FoFo écrit:
Je n'ai pas compris ce que tu souhaites comme traitement, un exemple ?j'ai du mal a utiliser les valeurs de la collection $obj genre pas possible de faire du substring and co
Message édité par: Laurent Dardenne, à: 13/08/13 11:01
Correction de coquille dans le code<br><br>Message édité par: Laurent Dardenne, à: 13/08/13 15:00
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- FoFo
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 10
- Remerciements reçus 0
j'ai lu comme best practice qu'il faut toujours créer des collections pour simplifier et améliorer le traitement des résultats (export convert select etc) mais pas toujours évident a faire pour un debutant...
dans mon exemple je voulais récupérer le nom de l'user
via ProfileImagePath
le probleme c'est qu'il recup
\"C:\Documents and Settings\username\" dans la variable
alors je voulais faire un substring sur cette variable mais cela ne fonctionne pas ...car \"methode absente\"
aurais tu une idée ?
Merci !
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Disons que tes traitements doivent renvoyer des objets.j'ai lu comme best practice qu'il faut toujours créer des collections pour simplifier et améliorer le traitement des résultats (export convert select etc)
Si un traitement renvoie un objet, on force la création d'une collection, comme tu le fais, avec $Obj=@(...).
Tu as compris le principal sous PS.
FoFo écrit:
C'est en codant que l'on devient codeurmais pas toujours évident a faire pour un debutant...
Mais c'est déjà qq chose à comprendre avant de le faire.
FoFo écrit:
Comme nous tousça fait un mois que je me suis mis au powershell et je galere pas mal ...
FoFo écrit:
Sans le code qui te pose problème, je ne le comprend pas.alors je voulais faire un substring sur cette variable mais cela ne fonctionne pas ...car \"methode absente\"
Si l'information que tu récupères est un path, procéde ainsi :
[code:1]
$obj|split-path -path {$_.username} -leaf
[/code:1]
Je te laisse adapter le code de création d'objet.
Mais tu perdras une information en procédant ainsi. L'ajout d'une propriété calculée est préférable.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- FoFo
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 10
- Remerciements reçus 0
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Export/manipulation de valeurs de base de registre