Question table ou hashtable

Plus d'informations
il y a 16 ans 8 mois #4892 par Kaelem
table ou hashtable a été créé par Kaelem
Salut,

je suis nouveau en prog PS.

A travers un scipt, j'essaie de récupérer la liste de mes dossiers publics sous exchange 2007.

ce que j'arrive à faire:
[code:1]
$listpf=Get-PublicFolder -Identity \"\FAX\" -recurse | ft identity

#$hashpf=@{}

#$j=0

foreach ($i in $listpf)
{
$i
#$hashpf.key$j=$i
#$j
#$j++

}
[/code:1]


Voilà ce que j'obtiens en résultat:

Identity
\Fax
\Fax\FAX 2410
\Fax\FAX Arte Info
\Fax\FAX Arte Reportage
\Fax\FAX Comité d'Entreprise
\Fax\FAX Direction de la Gestion
\Fax\FAX Direction de l'antenne
\Fax\FAX Direction de l'Information
\Fax\FAX Direction des Programmes
\Fax\FAX Documentalistes
\Fax\FAX Informatique
\Fax\FAX Présidence
\Fax\FAX Prestation accueil et livraisons
\Fax\FAX Production Arte Info
\Fax\FAX Production Thema
\Fax\FAX Programmation et Etudes d'Audiences
\Fax\FAX Secteur Achats
\Fax\FAX Secteur Continuité d'Antenne
\Fax\FAX Secteur Habillage et Promotion
\Fax\FAX Secteur Marketing et Sponsoring
\Fax\FAX Secteur Multilingue
\Fax\FAX Secteur Organisation
\Fax\FAX Secteur Prédiffusion
\Fax\FAX Secteur Presse et Relations Publiques
\Fax\FAX Secteur Rédaction Centrale des Textes
\Fax\FAX Secteur Regie Finale
\Fax\FAX Service Financier
\Fax\FAX Service Juridique
\Fax\FAX Service Linguistique
\Fax\FAX Service Multimedia
\Fax\FAX Service Ressources Humaines
\Fax\FAX Services Généraux
\Fax\FAX Technique
\Fax\FAX Technique1
\Fax\FAX Unité Cinéma
\Fax\FAX Unité Documentaires
\Fax\FAX Unité Documentaires et Magazines
\Fax\FAX Unité Fictions
\Fax\FAX Unité Spectacles
\Fax\FAX Unité Théma
\Fax\FaxMaster

J'aimerais supprimer les deux ou trois premiers éléments pour donner chaque chemin de PF à une fonction pour un quelconque traitement à venir.

Hors je n'arrive pas à manipuler le tableau.

[code:1]
$listpf=Get-PublicFolder -Identity \"\FAX\" -recurse | ft
identity
$listpf.count
][/code:1]

--> 45

[code:1]$listpf[0][/code:1]

La liste est vide alors que je peux afficher le contenu en faisant un $listpf???

[code:1]$listpf[1][/code:1]
out-lineoutput : Object reference not set to an instance of an object.


D'ailleurs, quelle est la nature de la variable $listpf?

Merci d'avance pour votre aide.


Merci d'avance pour votre aide, Kaelem<br><br>Message édité par: Kaelem, à: 30/06/09 17:10

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

Plus d'informations
il y a 16 ans 8 mois #4896 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:table ou hashtable
Kaelem écrit:

D'ailleurs, quelle est la nature de la variable $listpf?

Pour afficher le type
[code:1]$listpf.GetType()[/code:1]
Kaelem écrit:

La liste est vide alors que je peux afficher le contenu en faisant un $listpf?

A prioris non puisque que sa propriété Count renvoi 45.
Pas certain que cela soit un tableau, essaie d'y accèder à l'aide d'un possible énumérateur ( $listpf est au moins une collection) :
[code:1]$listpf.GetEnumerator()|% {$_}[/code:1]

En passant peux-tu corriger la balise code erroné dans ton précédent message ?

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 8 mois #4899 par Kaelem
Réponse de Kaelem sur le sujet Re:table ou hashtable
[code:1][PS] C:\scripts\PF&gt;$listpf.GetType()

IsPublic IsSerial Name BaseType

----
True True Object[] System.Array
[/code:1]

donc c'est un tableau.

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

Plus d'informations
il y a 16 ans 8 mois #4900 par Kaelem
Réponse de Kaelem sur le sujet Re:table ou hashtable
[code:1]
$listpf.GetEnumerator() | % {$_}
[/code:1]

Resultat:
Identity
\Fax
\Fax\FAX 2410
\Fax\FAX Arte Info
\Fax\FAX Arte Reportage
\Fax\FAX Comité d'Entreprise
\Fax\FAX Direction de la Gestion
\Fax\FAX Direction de l'antenne
\Fax\FAX Direction de l'Information
\Fax\FAX Direction des Programmes
\Fax\FAX Documentalistes
\Fax\FAX Informatique
\Fax\FAX Présidence
\Fax\FAX Prestation accueil et livraisons
\Fax\FAX Production Arte Info
\Fax\FAX Production Thema
\Fax\FAX Programmation et Etudes d'Audiences
\Fax\FAX Secteur Achats
\Fax\FAX Secteur Continuité d'Antenne
\Fax\FAX Secteur Habillage et Promotion
\Fax\FAX Secteur Marketing et Sponsoring
\Fax\FAX Secteur Multilingue
\Fax\FAX Secteur Organisation
\Fax\FAX Secteur Prédiffusion
\Fax\FAX Secteur Presse et Relations Publiques
\Fax\FAX Secteur Rédaction Centrale des Textes
\Fax\FAX Secteur Regie Finale
\Fax\FAX Service Financier
\Fax\FAX Service Juridique
\Fax\FAX Service Linguistique
\Fax\FAX Service Multimedia
\Fax\FAX Service Ressources Humaines
\Fax\FAX Services Généraux
\Fax\FAX Technique
\Fax\FAX Technique1
\Fax\FAX Unité Cinéma
\Fax\FAX Unité Documentaires
\Fax\FAX Unité Documentaires et Magazines
\Fax\FAX Unité Fictions
\Fax\FAX Unité Spectacles
\Fax\FAX Unité Théma


Mais comment parcourir le tableau, c'est ce que je n'arrive pas à faire.

Pour le première élément du tableau il ne me renvoie rien mais pas de message d'erreur:
[code:1]
$listpf[0]
[/code:1]

Alors que pour un autre élément:
[code:1]
$listpf[1]
[/code:1]

--&gt; out-lineoutput : Object reference not set to an instance of an object.

[code:1]
$listpf[10]
[/code:1]

--&gt; out-lineoutput : Object of type \&quot;Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData\&quot; is not legal or not in
the correct sequence. This is likely caused by a user-specified \&quot;format-*\&quot; command which is conflicting with the defaul
t formatting.

Même la méthode GetValue(x) ne renvoie rien???

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

Plus d'informations
il y a 16 ans 8 mois #4901 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:table ou hashtable
Aprés réflexion ton problème provient de l'usage du cmdlet Format-Table.
Son objectif est de préparer les données pour un affichage, l'objet que tu récupéres n'a donc rien à voir avec les données que tu souhaites récupérer.
[code:1]
#Une seule instance
$ObjetWMI = Get-WmiObject \&quot;Win32_MotherboardDevice\&quot;|ft
$ObjetWMI[0]
#ras
$ObjetWMI[1]
#out-lineoutput : La référence d'objet n'est pas
#définie à une instance d'un objet.
#
$ObjetWMI = Get-WmiObject \&quot;Win32_MotherboardDevice\&quot;
$ObjetWMI[0]
Impossible d'indexer dans un objet de type System.Management.ManagementObject.
Au niveau de ligne : 1 Caractère : 11
+ $ObjetWMI[0 &lt;&lt;&lt;&lt; ]
[/code:1]
Tu récupéres donc un objet de formatage qui contient une liste de données provenant de Get-Folder :
[code:1]
PS G:\PS\ConvertForm&gt; $ObjetWMI[0].GetType()

IsPublic IsSerial Name BaseType

----
False False FormatStartData Microsoft.PowerShell.Commands.Internal.Format.StartData
[/code:1]
Construit ainsi, $listpf est préparé pour de multiple affichage, mais pas pour manipuler la collection de données récupéré, tu manipules donc une vue.<br><br>Message édité par: Laurent Dardenne, à: 30/06/09 18:42

Tutoriels PowerShell

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

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