Populate list of Applications / Dependencies in an Application Bundle in MDT 2012
MDT 2012 lets you create a bundle of applications in which you can list multiple applications to be installed, together. Recently, I had a requirement to populate all of the bundles in MDT Share and its dependencies/applications which should be available whenever needed with current information.
I figured using MDT PowerShell module, can be pretty handy at this task. The only thing I’m using this module, is to utilize MDTProvider so that I can browse through entire share.
Here is the snippet of the code:
## Check for module and import, if not already.
if(-not(Get-Module -Name MicrosoftDeploymentToolkit))
{
try
{
Import-Module "C:Program FilesMicrosoft Deployment ToolkitbinMicrosoftDeploymentToolkit.psd1" -ErrorAction Stop
}
catch
{
“Boooo”
$_.exception | fl * -Force
}
}
## Create a drive using MDT provider.
if(!(Test-Path SERVER1:))
{
New-PSDrive -Name "SERVER1" -PSProvider MDTProvider -Root "\SERVER1ShareName1"
}
## Populate all objects from bundles & apps. All dependency apps in bundles reside in Apps path.
$allBundles = dir "SERVER1:applicationsApp Bundles"
$stdapps = dir "SERVER1:applicationsApps"
## Create CSV file
$csvFile = New-Item -Type file -Path "C:ProgramDatatemp1" -Name ((Get-Date -f MMM-dd-yyyy-HH-mm-ss)+".csv") -Force
"Name, Bundle, Guid, Version, Path, Commandline" | Out-File $csvFile -Append -Encoding ascii
## Populate and fill data into CSV
foreach ($bundle in $allBundles)
{
"------------------------------------------------------------"+ ","+ ","+ ","+ ","| Out-File $csvFile -Append -Encoding ascii
$bundle.name + ",****"+ ",****"+ ",****"+ ",****"| Out-File $csvFile -Append -Encoding ascii
"------------------------------------------------------------"+ ","+ ","+ ","+ ","| Out-File $csvFile -Append -Encoding ascii
foreach ($dep in $bundle.dependency)
{
$stdapps | foreach {
if($_.guid -eq $dep)
{
$_.name + "," +$bundle.Name +","+ $_.guid + "," +$_.version + "," +("\SERVER1ShareName1" + $_.workingdirectory.remove(0,2)) + "," + $_.Commandline + ","
}
} | Out-File $csvFile -Append -Encoding ascii
}
}
## Open CSV
& $csvFile
You can modify the script as per your need, like adding/replacing more properties etc.. Once the object is in hand, you can fetch anything around it.