Question Récupération des tableaux avec les JOBs limités

Plus d'informations
il y a 11 ans 9 mois #17671 par clément
Bonjour à tous,
J'ai un soucis lors de la récupération des données après l’exécution d'un job.
Je m’explique,
Au départ je lance un start-job, puis un Wait-job,
Ensuite j’exécute un receive-job qui me permet de récupérer mon tableau.
Le problème est que mon tableau contient des sous tableaux qui peuvent eux aussi contenir d'autres sous tableaux.
Lors de la récupération de mon tableau, je peut visualiser le 1er et le 2ème niveau, mais je n'ai pas de données en dessous.
En clair il ne me récupère pas l'intégralité des données de mon tableau

Savez vous comment récupérer tout les niveaux de mon tableau, Comment enlever cette limitation de récupération de données??

((De ce que j'ai pu lire sur le livre \"Windows PowerShell V3\", cela serai du à la limitation des données lors du transfert d'un powershell à un autre qui se fais via du XML.))

Merci d'avance pour votre aide et bonne journée à vous ;)

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

Plus d'informations
il y a 11 ans 9 mois #17675 par Laurent Dardenne
anonym17 écrit:

((De ce que j'ai pu lire sur le livre \"Windows PowerShell V3\", cela serai du à la limitation des données lors du transfert d'un powershell à un autre qui se fais via du XML.))

C'est peut être un pb de serialization depth .
Dans ce cas il faut modifier le type ETS dans le code du scriptblock :
[code:1]
$j = Start-job {
Update-TypeData -TypeName Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet -SerializationDepth 10 -Force
Get-Counter '\Processor(_total)\% Processor Time' -MaxSamples 2} | Wait-job | Receive-job
}
$j[0].CounterSamples.CookedValue
[/code:1]
A confirmer.

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 9 mois #17679 par clément
Merci pour ta réponse,
Malheureusement, je n'utilise pas ça pour les compteurs de performances.
Mon but est d'envoyer une requête sur un vCenter via PowerCli, est c'est lors de ma requête :
\"(Get-Cluster <Mon_Cluster> | get-View)\"
Que celui-ci me génère des tableaux dans des sous tableaux qui eux même intègre des sous tableaux...etc.

As-tu une solution?

[code:1]
$j = Start-job {
$b = Add-PSSnapin -Name \"VMware.VimAutomation.Core\" -ErrorAction SilentlyContinue

$a = Connect-VIServer \"My_IP\" -Session \"MyIdSession\"

$ClusterInfo = (Get-cluster -Name \"My_Cluster\" | Get-View)
Return $ClusterInfo
} | Wait-job | Receive-job

[/code:1]


Merci d'avance ;)

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

Plus d'informations
il y a 11 ans 9 mois #17682 par Laurent Dardenne
anonym17 écrit:

Malheureusement, je n'utilise pas ça pour les compteurs de performances.

C'est un exemple ;)
Une version remaniée 'Fr':
[code:1]
$j = Start-job {
Get-Counter '\processeur(_total)\% Temps processeur' -MaxSamples 2}
$res=$j| Wait-job | Receive-job
$res[0].CounterSamples[0].CookedValue

$j = Start-job {
Update-TypeData -TypeName Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet -SerializationDepth 10 -Force
Get-Counter '\processeur(_total)\% Temps processeur' -MaxSamples 2}
$res=$j| Wait-job | Receive-job

$res[0].CounterSamples[0].CookedValue
[/code:1]
Dans le premier cas, l'objet renvoyé ne contient qu'un niveau, Objet.Objet.

Dans le second cas on modifie la profondeur des niveaux, ici 10, Objet1.Objet2.Objet3.etc.
C'est bien l'imbrication d'objet qui pose problème.
Dans ton cas il faut retrouver le type du ou des objets émis dans le pipeline.

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 9 mois #17689 par clément
Merci pour tes réponses et réactivités, j'avais mal vu la nuance à ton 1er poste, c'était de ma faute.

J'ai donc testé, mis le bon typeName qui correspond pour moi à \"VMware.Vim.ClusterComputeResource\"
Maintenant, le problème est que je pense que sous mon PowerShell V2 :ohmy: , cette commande ne fonctionne pas, car cela ne change strictement rien.
Je pense que sous PowerShell V3 ou V4 ça fonctionnerai, mais pas sous ma version (Mais je n'affirme pas).
j'aurai voulu garder ma Version 2 pour une histoire de compatibilité plus grande.

Pense tu qu'il y est une solution alternative?

merci encore :)

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

Plus d'informations
il y a 11 ans 9 mois #17691 par Laurent Dardenne
anonym17 écrit:

j'avais mal vu la nuance à ton 1er poste

Dans le forum 'pour les initiés', je prend qq libertés dans le contenu :-)
anonym17 écrit:

Pense tu qu'il y est une solution alternative?

Au temps pour moi je n'ai pas précisé la version, ici la V3.
La v2 ayant un bug sur ce point, il existe une solution dynamique (je dois retrouver le lien).
Sinon créer/reconstruire le fichier .ps1xml en modifiant la balise adéquate.
Un module est peut être préférable pour le charger ainsi chacun de tes scripts pourrait en bénéficier.
Enfin à toi de voir.

D'après ce post ceci devrait suffire :
[code:1]
<Types>
<Type>
<Name>VMware.Vim.ClusterComputeResource</Name>
<Members>
<MemberSet>
<Name>PSStandardMembers</Name>
<Members>
<NoteProperty>
<Name>SerializationDepth</Name>
<Value>
10
</Value>
</NoteProperty>
</Members>
</MemberSet>
</Members>
</Type>
</Types>
[/code:1]
Attention toutefois à la surcharge (réseau et/ou processeur) que cela apporte.
Enfin si l'exécution du job se fait sur la même machine, un export-clixml est peut être une autre solution.
A tester.

Tutoriels PowerShell

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

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