Today we’ve been looking at App-V 4.6 package settings before and after migrating them from ConfigMgr 2007 to ConfigMgr 2012, so after opening the App-V mmc console 3x manually…..another script was born.
The below Get-Appv4PkgInfo.ps1 script retrieves information from the App-V Package WMI class. You can run the script against one or more computers and the optional –View parameter lets you define what information you want to see.
<#
.Synopsis
Retrieve local App-V 4.6 Package information
.DESCRIPTION
Retrieve local App-v Package Information from root\Microsoft\appvirt\client
.PARAMETER Computer
One or multiple computernames
.PARAMETER View
Specifies the information that is displayed for the identified App-V Package
Valid options for the view parameter are Default,Path, Cache, Inuse, Size, GUIDS, Locked,All
.EXAMPLE
Get-Appv4PkgInfo.ps1 -Computer TestClient1, TestClient2
Shows the same output as when providing the -View Default parameter
.EXAMPLE
Get-Appv4PkgInfo.ps1 -Computer TestClient1 -View Default
Computer AppVname Version
-------- -------- -------
TestClient1 SCCM Client Center 2.0.4.1 x64 R1 5
.EXAMPLE
Get-Appv4PkgInfo.ps1 -Computer TestClient1,Testclient2 -View Path
Computer AppVname SFTPath
-------- -------- -------
TestClient1 SCCM Client Center 2.0.4.1 x64 R1 FILE://c:\windows\ccmcache\7\sccm client.
.LINK
http://technet.microsoft.com/en-us/library/cc843631.aspx
.NOTES
Version 1.0, by Alex Verboon
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,HelpMessage="Enter Computername(s)",
Position=0)]
[Alias("ipaddress","host")]
[String[]]$Computer,
[Parameter(Mandatory=$false,
ValueFromPipelineByPropertyName=$true,HelpMessage="Select the type of information to display",
Position=1)]
[ValidateSet("Default","Path","Cache","Inuse","Size","GUIDS","Locked","All")]
$View="Default"
)
Begin{}
Process{
$appv =@()
ForEach($c in $Computer)
{
$applications = get-wmiobject -ComputerName $c -query "SELECT * FROM Package" -namespace "root\Microsoft\appvirt\client" -ErrorAction SilentlyContinue
ForEach($app in $applications)
{
$object = New-Object -TypeName PSObject
$object | Add-Member -MemberType NoteProperty -Name "Computer" -Value $c
$object | Add-Member -MemberType NoteProperty -Name "AppVname" -Value $app.Name
$object | Add-Member -MemberType NoteProperty -Name "Version" -Value $app.Version
$object | Add-Member -MemberType NoteProperty -Name "SFTPath" -Value $app.SftPath
$object | Add-Member -MemberType NoteProperty -Name "PackageGUID" -Value $app.PackageGUID
$object | Add-Member -MemberType NoteProperty -Name "VersionGUID" -Value $app.VersionGUID
$object | Add-Member -MemberType NoteProperty -Name "Locked" -Value $app.Locked
$object | Add-Member -MemberType NoteProperty -Name "LaunchSize" -Value $app.LaunchSize
$object | Add-Member -MemberType NoteProperty -Name "InUse" -Value $app.InUse
$object | Add-Member -MemberType NoteProperty -Name "CachedSize" -Value $app.CachedSize
$object | Add-Member -MemberType NoteProperty -Name "CachedPercentage" -Value $app.CachedPercentage
$object | Add-Member -MemberType NoteProperty -Name "CachedLaunchSize" -Value $app.CachedLaunchSize
$object | Add-Member -MemberType NoteProperty -Name "TotalSize" -Value $app.TotalSize
$appv += $object
} # end foreach application
} # end foreach computer
} # end process
End{
# Define the properties to display based on -View parameter option
switch($view)
{
Default {$selcol = "Computer", "AppVname","version"}
Inuse {$selcol = "Computer", "AppVname","Inuse"}
Size {$selcol = "Computer", "AppVname","LaunchSize","TotalSize"}
Cache {$selcol = "Computer", "AppVname","CachedSize","CachedPercentage","CachedLaunchSize"}
GUIDS {$selcol = "Computer", "AppVname","PackageGUID","VersionGUID"}
Path {$selcol = "Computer", "AppVname","SFTPath"}
Locked {$selcol = "Computer", "AppVname","Locked"}
All {$selcol = "*"}
}
$appv | Select-Object -Property $selcol
}