BDD 2007 & PowerShell : comment faire une cmdlet ?

Comme Michael Niehaus l'expliquait il y a quelques temps, il est assez simple d'utiliser la DLL ConfigManager de BDD 2007 pour effectuer quelques actions simples autour de BDD 2007 dans PowerShell.

Passé ma première impression d'excitation, je me suis rendu compte que pour afficher quelques données, il fallait quand même taper plusieurs lignes de commandes, et ça, dans PowerShell c'est plus que frustrant J Voici donc comment passer de ça :

[System.Reflection.Assembly]::LoadFile("C:\Program Files\BDD 2007\bin\Microsoft.BDD.ConfigManager.dll")
$manager = [Microsoft.BDD.ConfigManager.Manager]
$manager::DriverManager.GetDataTable()

À ça :

Get-BDDDrivers

Tout d'abord, il y a un certain nombre d'éléments à télécharger et installer sur votre poste, pour cela suivez les excellents billets de blog suivants :

Créez ensuite un nouveau projet "PowerShell cmdlet" dans Visual Studio 2005 et voici le code utilisé pour rédiger la cmdlet "Get-BDDDrivers"

using System;

using System.Collections.Generic;

using System.Text;

using System.Management.Automation;

using System.Collections;

using Microsoft.BDD.ConfigManager;

using System.Data;

namespace BDDCmdlets

{

[Cmdlet(VerbsCommon.Get, "BDDDrivers", SupportsShouldProcess = true)]

public class GetBDDDrivers : Cmdlet

{

protected override void ProcessRecord()

{

try

{

DataTable DriverTable = Manager.DriverManager.GetDataTable();

foreach (DataRow Driver in DriverTable.Rows)

{

WriteObject(Driver);

}

}

catch (Exception)

{

}

}

}

}

Générez la solution et voila J

Ce code est bien entendu inspiré en grande partie par le code source de BDD 2007 téléchargeable ici