Question classer par odre alphabetique format-list

Plus d'informations
il y a 13 ans 5 mois #13163 par Gabriel
Bonjour a tous

j'aimerais pouvoir classer par ordre alphabetique sur le nom des proprietes
[code:1]
get-qaduser toto | format-list -property *
[/code:1]

suivant l'utilisateur (en fait suivant que les propriete sont plus ou moins rempli l'ordre n'est pas le meme

par exemple la commande suivante me sort tous les champs propre a OCS

[code:1]
get-qaduser toto | format-list -property msRTC*
[/code:1]

mais les champs ne setront pas classé par ordre alphabétiques si il sont rempli.

une idee?
merci d'avance.

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

Plus d'informations
il y a 13 ans 5 mois #13165 par xyz
Salut,
tonic8 écrit:

une idee?

Sort-Object ?

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 5 mois #13169 par Gabriel
ah j'ai essayé le message est

[code:1]
PS C:\> $a = get-qaduser toto
PS C:\> $a | gm | sort name


TypeName: Quest.ActiveRoles.ArsPowerShellSnapIn.Data.ArsUserObject

Name MemberType
----
AccountExpirationStatus Property
AccountExpires Property
AccountIsDisabled Property
AccountIsExpired Property
AccountIsLockedOut Property
accountNameHistory NoteProperty
[/code:1]

par contre

[code:1]
PS C:\> $a | format-list -property msrtc* | sort name
out-lineoutput : The object of type \"Microsoft.PowerShell.Commands.Internal.Format.FormatEndData\" is not valid or not i
n the correct sequence. This is likely caused by a user-specified \"format-*\" command which is conflicting with the defa
ult formatting.
+ CategoryInfo : InvalidData: (:«») [out-lineoutput], InvalidOperationException
+ FullyQualifiedErrorId : ConsoleLineOutputOutOfSequencePacket,Microsoft.PowerShell.Commands.OutLineOutputCommand
[/code:1]

ca ne marche pas a cause du format objet de format-list...
et si je fait l'inverse

[code:1]
PS C:\> $a | sort -property msrtc* | format-list
[/code:1]

et bien ca ne fonctionne pas.

je sais que je passe a coté d'un truc...
:blush:

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

Plus d'informations
il y a 13 ans 5 mois #13170 par xyz
tonic8 écrit:

$a | gm | sort name

Ici c'est normal, tu ne traites pas les objets ciblés, mais le détail de chacun d'eux.
tonic8 écrit:

par contre
...
ca ne marche pas a cause du format objet de format-list...

Normal.
tonic8 écrit:

et bien ca ne fonctionne pas.

Certe, mais qu'est-ce qui ne fonctionne pas ?
Je n'ai ni d'AD ni les cmdlets Quest sous la main.

tonic8 écrit:

je sais que je passe a coté d'un truc...

C'est fort probable.
Le pipeline de PS réceptionne et traite les objets les uns à la suite de autres. Par contre avec un tri sur *, c'est PS qui détermine l'ordre. Est-il Alphabétique ?

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 5 mois #13171 par Gabriel
:-)

ok allons y:

le get-qaduser renvoie un objet contenant par exemple ceci:
[code:1]
PS C:\> $a = get-qaduser toto
PS C:\> $a | gm


TypeName: Quest.ActiveRoles.ArsPowerShellSnapIn.Data.ArsUserObject

Name MemberType Definition
----

CommitChanges Method System.Void CommitChanges()
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
edsvaNamingContextDN NoteProperty edsvaNamingContextDN=null
facsimileTelephoneNumber NoteProperty System.String facsimileTelephoneNumber=+33(5)55177
givenName NoteProperty System.String givenName=toto
l NoteProperty System.String l=PARIS 09
mail NoteProperty System.String mail=toto@tata.com
mobile NoteProperty System.String mobile=+33(5)55177
objectClass NoteProperty System.Object[] objectClass=System.Object[]
objectGUID NoteProperty System.String objectGUID=47DF487A929ADB439A18368AE1456D3F
objectSid NoteProperty System.String objectSid=0105000000000005150000003BE3EF2BA01E0906CB4...
physicalDeliveryOfficeName NoteProperty System.String physicalDeliveryOfficeName=1 rue de l'espoir
sn NoteProperty System.String sn=titi
st NoteProperty st=null
...[/code:1]

j'utilise le format-list pour afficher le nom de la propriete suivie de la valeur.
la sortie via format-list difeere d'un compte a l'autre:
par exemple tutu aura les champs dans un ordredifferent de toto mais pour toto ce sera toujours le meme ordre.

a priori le classement vient de comment les données sont remplie et quand... si un champs est modifié l'ordre pour toto changera jusqu' a la prochaine modif.

merci pour ton aide.<br><br>Message édité par: tonic8, à: 30/11/12 16:58

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

Plus d'informations
il y a 13 ans 5 mois #13176 par xyz
Merci d'avoir détaillé.
Essaie en précisant le paramètre -IncludedProperties sur le cmdlet, et si cela ne suffit pas crée des objets identique via Select-Object.
Je ne connais pas le détail des API de formatage, mais il y a effectivement une rupture lorsque les objets ne sont pas considérés comme identique.

Ici bien que l'objet soit de la classe ArsUserObject on est en présence d'un objet personnalisé (PSCustomObject).

Tutoriels PowerShell

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

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