Question Export/manipulation de valeurs de base de registre

Plus d'informations
il y a 12 ans 7 mois #15581 par FoFo
Salut :)

ça fait un mois que je me suis mis au powershell et je galere pas mal ... :dry:

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 :sick:..
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.

Plus d'informations
il y a 12 ans 7 mois #15586 par Laurent Dardenne
Salut,
FoFo écrit:

ça marche, mais mon code donne un peu envie de :sick:..

Je ne trouve pas, tu peux le simplifier ( sous PS v2) :
[code:1]
$RegKeySid=\&quot;hKEY_LOCAL_MACHINE\Software\Microsoft\windows NT\CurrentVersion\ProfileList\\&quot;

$Sids=Get-ChildItem -path registry::\&quot;$RegKeySid\&quot; -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::\&quot;$RegKeySid\&quot; -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:

j'ai du mal a utiliser les valeurs de la collection $obj genre pas possible de faire du substring and co

Je n'ai pas compris ce que tu souhaites comme traitement, un exemple ?

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.

Plus d'informations
il y a 12 ans 7 mois #15588 par FoFo
salut Laurent et merci pour ta réponse ! ;)

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
\&quot;C:\Documents and Settings\username\&quot; dans la variable

alors je voulais faire un substring sur cette variable mais cela ne fonctionne pas ...car \&quot;methode absente\&quot; :)

aurais tu une idée ?

Merci !:blush:

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

Plus d'informations
il y a 12 ans 7 mois #15591 par Laurent Dardenne
FoFo écrit:

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)

Disons que tes traitements doivent renvoyer des objets.
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:

mais pas toujours évident a faire pour un debutant...

C'est en codant que l'on devient codeur :-)
Mais c'est déjà qq chose à comprendre avant de le faire.
FoFo écrit:

ça fait un mois que je me suis mis au powershell et je galere pas mal ...

Comme nous tous ;-)
FoFo écrit:

alors je voulais faire un substring sur cette variable mais cela ne fonctionne pas ...car \&quot;methode absente\&quot; :)

Sans le code qui te pose problème, je ne le comprend pas.
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.

Plus d'informations
il y a 12 ans 7 mois #15604 par FoFo
Merci ! je vais tester ! ;)

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

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