So I went and purchased the Windows PowerShell In Action book by Bruce Payette and so far I've enjoyed it. It eases you in nicely to powershell and then goes right into the depths of creating scriptbocks and advanced functions. I think it helps quite a bit to be a knowledgeable scripter before hand. This book seems to target admins that already know how to script-manage their environment and instead teaches them how to use that knowledge in powershell instead.
I, on the other hand, still have lots to learn using PowerShell. 
Well I figured I would upload my current "Deployment Roles" document that describes how to modify your current BDD 2007 scripts to include the ability to configure and manage roles on a database table to make them selectable on the LiteTouch wizard.
This article is for advanced BDD users or those comfortable in editing their own BDD scripts. If you are to follow this document, then make a backup of every file that is to be modified. This allows you to put the original code back once a BDD update comes out, as well as if anything breaks after you impliment it.
I am working on an updated procedure that should be a much cleaner approach and will also work with ZTI as Ben Hunter has hinted about doing in his blog of using LTI wizards in ZTI. But if you want to know, yes we are using this current procedure in production now with no issues. The main downside to it is to manage the rolegroups requires you to use another method (such as SQL Management Studio) other than the workbench to update the deploymentgroup table since the current BDD Workbench doesn't support or even acknowledge this table exists because it is custom with the procedure.
BDD LiteTouch Deployment Roles Modification
EDIT: See the newer article for an updated process: http://myitforum.com/cs2/blogs/jscheffelmaer/archive/2007/05/02/new-bdd-roles-select-wizard-lti-zti-mod.aspx
Rod set me up with my blog spot on myITforum so I can finally start rambling to whoever doesn't want to listen. ;) I am guessing most of my blogs are going to be focused around BDD, VBScripts, Powershell, & SMS.
So I noticed Michael Niehaus's blog from Saturday talking about using BDD & Powershell together. He posted a great example on using Powershell to query the drivers in BDD and create groups based on each drivers manufacterer and add the drivers to the groups. I thought this was a perfect example to get minds thinking of the possibilities of scripting or automating BDD workbench.
So I started playing around with a few of the commands just for testing. It really helps having the BDD Source code on hand to look into the source for available functions and such. The one I initially wanted to play with was the databaseconnection object. This allowed me to do direct queries to the database utilizing the Microsoft.BDD.ConfigManager.dll. Here is a poor example of a powershell query that returns roles assigned to specific data set at the top of the script. You can see how this could create a nice report.
# Initialization
$MycompAssetTag = "4330-9718-9298-1100-7864-6575-19"
$MyGateway = "10.20.30.1"
$MyMake = "IBM"
$MyModel = "T43"
[System.Reflection.Assembly]::LoadFile("C:\Program Files\BDD 2007\bin\Microsoft.BDD.ConfigManager.dll")
$manager = [Microsoft.BDD.ConfigManager.Manager]
write-host ""
write-host "The following roles apply to your computer:"
# Get ComputerSettings (Need computer AssetTag, UUID, SerialNumber, MacAddress)
foreach ($computerItem in $manager::databaseConnection.Table("ComputerIdentity"))
{
If ($computerItem["AssetTag"] -eq $MycompAssetTag)
{
$compID = $computerItem["ID"]
}
}
# Get Locations (Need computer AssetTag, UUID, SerialNumber, MacAddress)
foreach ($defaultGateway in $manager::databaseConnection.Table("LocationIdentity_DefaultGateway"))
{
If ($defaultGateway["DefaultGateway"] -eq $MyGateway)
{
$GatewayID = $defaultGateway["ID"]
}
}
# Get Locations (Need computer AssetTag, UUID, SerialNumber, MacAddress)
foreach ($MakeModel in $manager::databaseConnection.Table("MakeModelIdentity"))
{
If ($MakeModel["Make"] -eq $MyMake)
{
If ($MakeModel["Model"] -eq $MyModel)
{
$MakeModelID = $MakeModel["ID"]
}
}
}
# Get Computer Roles
foreach ($computerRole in $manager::databaseConnection.Table("ComputerRoles"))
{
If ($computerRole["ID"] -eq $CompID)
{
write-host - $computerRole["Role"]
}
}
# Get Location Roles
foreach ($LocationRole in $manager::databaseConnection.Table("LocationRoles"))
{
If ($LocationRole["ID"] -eq $GatewayID)
{
write-host - $LocationRole["Role"]
}
}
# Get Make/Model Roles
foreach ($MakeModelRole in $manager::databaseConnection.Table("MakeModelRoles"))
{
If ($MakeModelRole["ID"] -eq $MakeModelID)
{
write-host = - $MakeModelRole["Role"]
}
}