Kind of a long title for a blog post, but I could not come up with something shorter to describe the content of this blog post. The below script shows the status of the “Allow this Application / program to be installed from the Application / program install task sequence action without being deployed” setting.
<# .Synopsis Get Application and Package - Program information regarding Task Sequence support .DESCRIPTION The script checks all applications and packages if they are allowed to be installed from a TS without being deployed .EXAMPLE Get-TSInstallEnabled -Site Lab .NOTES Version 1.0 Written by Alex Verboon #> [CmdletBinding()] param( # ConfigMgr Site [Parameter(Mandatory = $true, ValueFromPipeline=$true)] [String[]] $Site ) if ($Site.Length -eq 0) { Throw "ConfigMgr Site code required" } Else { $SiteCode = $Site } function Get-TSInstallEnabled () { # Check that youre not running X64 if ([Environment]::Is64BitProcess -eq $True) { Throw "Need to run at a X86 PowershellPrompt" } # Load ConfigMgr module if it isn't loaded already if (-not(Get-Module -name ConfigurationManager)) { Import-Module ($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + '\ConfigurationManager.psd1') } # Change to site Push-Location Set-Location ${SiteCode}: function Get-AppTSInfo() { $Apps = @() foreach ($Application in Get-CMApplication) { $AppMgmt = ([xml][/xml]$Application.SDMPackageXML).AppMgmtDigest $AppName = $AppMgmt.Application.DisplayInfo.FirstChild.Title $AllowTs = $AppMgmt.Application.AutoInstall $object = New-Object -TypeName PSObject $object | Add-Member -MemberType NoteProperty -Name "Application Name" -Value $Appname if ($AllowTs -ne "true") {$AllowTs = "false"} $object | Add-Member -MemberType NoteProperty -Name "Allowed TS Install" -Value $AllowTs $Apps += $object } $Apps } Function Get-PackageTSInfo() { $Progs = @() foreach ($Prog in Get-CMProgram) { $ProgName = $Prog.ProgramName $PackageName = $prog.PackageName $AllowTs = $Prog.ProgramFlags -band [math]::pow(0,0) $object = New-Object -TypeName PSObject $object | Add-Member -MemberType NoteProperty -Name "Program Name" -Value $ProgName $object | Add-Member -MemberType NoteProperty -Name "Package Name" -value $Packagename if ($AllowTs -ne "1") {$AllowTs = "false"} Else {$AllowTs = "true"} $object | Add-Member -MemberType NoteProperty -Name "Allowed TS Install" -Value $AllowTs $Progs += $object } $progs } Get-AppTSInfo | Format-Table -AutoSize Get-PackageTSInfo | Format-Table -AutoSize Pop-Location } Get-TSInstallEnabled
Additional Information
Hi,
Great script! I have a requirement to enable this setting if it isn’t already enabled. How would I go about that? we have an environment with around 200 applications, none of which have this option checked and I am implementing a UDI wizard deployment and require this checkbox.
Thanks,
Luke