PowerShell : Utiliser le résultat d’une fonction comme colonne d’affichage

Après des heures de recherche et de problèmes, j’ai finalement trouvé réponse à ma question, et j’ai pensé la partagé ici.

Le problème

Je devais sortir la liste complète des fonctionnalités SharePoint dans un format X. Par contre, l’information qui m’intéressait le plus était le titre affiché par SharePoint de chacune des fonctionnalités. Évidemment, cette information est retracée par la méthode GetTitle de l’objet SPFeatureDefinition.

Le cheminement

J’ai passé par plusieurs chemins pour tenter d’y arriver.

  1. L’utilisation d’un PSObject pour générer un objet transitoire. L’idée était bonne, mais je n’aimais pas le fait que je n’avais plus accès aux autres propriétés de l’objet de base.
  2. L’utilisation d’un Write-Host pour affiché seulement l’information intéressante.
  3. La création d’un HashTable qui allait m’être utilie pour afficher le résultat final

Finalement, et par toute évidence, je savais que ma façon de faire était plus ou moins, disons, correcte…  La réponse à ma question était dans la question elle-même.  L’affichage ne pourrait-il par s’occuper d’appeller cette méthode lors de son exécution ? Et bien… oui !

La solution

L’utilisation d’un objet anonyme utilisé par le Cmdlet Select-Object s’est finalement avéré la bonne chose à faire.  Si un objet anonyme avec la structure suivante est transmis à Select-Object, il la gérera comme étant un appel, et ainsi s’occupera de retracer le résultat de celui-ci.

Donc dans mon cas bien précis, mon appel était le suivant :

Get-SPFeature | Select *,  @{ Name = "Title"; Expression = {$_.GetTitle(1036)} } | Out-GridView

En conservant l’ensemble des propriétés de mes objets, il est m’beaucoup plus utile maintenant pour affiner ma recherche, et toujours m’assurer de voir mon titre affiché dans mon résultat final!

Bon PowerShell !

Laisser un commentaire

NOTE - Vous pouvez utiliser les éléments et attributs HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>