Buch
- App-V Infrastruktur
- App-V Client
- App-V Sequenzierung
- Tools & Troubelshooting
- PowerShell mit App-V
Vor einiger Zeit habe ich ein PowerShell Dokumentationsskript für eine App-V Serverinfrastruktur erstellt. Das habe ich mit viel Aufwand im Dezember 2019 überarbeitet. Viele Funktionen, die zuvor über das Skript abgebildet wurden, sind dabei in das Modul gewandert. Im jetzigen Zustand ist das Modul insbesondere dafür gut, Informationen aus der „.AppV“ Datei zu extrahieren aber auch Informationen aus den externen Konfigurationsdateien UserConfig.xml und DeploymentConfig.xml.
Noch das Rechtliche: Wir geben keinerlei Gewährleistung für die Funktion oder Schäden. Das Modul steht unter der MIT Lizenz. Programfehler sind nicht ausgeschlossen.
Dieses Jahr ist geplant, dem Modul noch weitere Funktionen zu geben. Erst einmal kann man schon einige nette Dinge mit dem Modul anfangen. Das Modul könnt ihr unten am Ende dieses Blogs herunterladen. Alternativ steht die aktuelle Version über die PowerShell Gallery bereit. Bei einer Installation im UserScope (und PoSh 5.x) landet das Paket mit folgendem Befehl unter Documents\WindowsPowerShell\Modules
install-Module AppVForcelets -Scope CurrentUser
Der Befehl wird immer die neueste Version installieren. Die ist nach der Installation aber nicht unbedingt aktiv- Sollte schon eine Version installiert sein oder soll ein Update installiert werden kann das mit diesen Befehlen erfolgen:
#Installs the new version Update-Module -Name AppVForcelets -Scope CurrentUser #Remove Module form Memory Remove-Module AppVForcelets Import-Module AppVForcelts #Show active module version get-Command -Module AppVForcelets
Auch hier sind dann noch immer alte Versionen im Modulverzeichnis zu finden! Wer also sicher sein möchte nutzt die Version über Import-Module <path>
Import-Module $PSScriptRoot\..\AppVForcelets -force
Befehle im Module
CommandType Name Version Source ----------- ---- ------- ------ Function Convert-AppVPath 1.3 AppVForcelets Function Convert-AppVVFSPath 1.3 AppVForcelets Function Get-AppVDeploymentConfigInfo 1.3 AppVForcelets Function Get-AppVIconsFromPackage 1.3 AppVForcelets Function Get-AppVManifestInfo 1.3 AppVForcelets Function Get-AppVUserConfigInfo 1.3 AppVForcelets Function Save-AppVIcons 1.3 AppVForcelets
Dabei dienst Get-ManifestInfo zum Auslesen aus einer „.AppV“ Datei. Get-AppVDeploymentConfigInfo und Get-AppVUserConfigInfo werden für die Auswertung der externen Konfigurationsdaateien genutzt. Mit Get-AppVIconsFromPackage und Save-AppVIncons können die Icons der Anwendungen aus einer AppV Datei gespeichert werden. Ich plane diese Information für ein automatisiertes Publishing für die Citrix Terminalserver unserer Kunden zu nutzen.
Die beiden Convert Funktionen konvertieren App-V Pfade in VFS und physikalische Pfade. Auch das ist eine notwenige Information für ein automatisches Citrix Publishing.
Hier nun einige Beispiele, was das Modul kann (Je nach Größe des Content Store kann das alles etwas dauern). Für mehr Ausgabe den -Verbose Parameter nutzen.
Für alle Beispiele:
$Depot = <Pad auf Euer Freigabeverzeichnis>
Anzeige von Paketen mit Services:
Get-ChildItem "$Depot\*.appv" -Recurse | Get-AppVManifestInfo |Where-Object {$_.HasServices}| Select-Object -Property Name, HasShellExtensions, HasServices Name HasShellExtensions HasServices ---- ------------------ ----------- Adobe Acrobat DC für STW01 True True AcrobatReader_10 False True Adobe_PS_CS4 False True Acrobat_Pro_2015 True True Corel_PSP_X5 True True
Anzeige aller Pakete mit SxSAssemblys
Get-ChildItem "$Depot\*.appv" -Recurse | Get-AppVManifestInfo | Where-Object {$_.HasSxSAssemblys } | Select-Object -Property Name,SxSAssemblys Anzeige von Paketen mit User Scripts im Paket Get-ChildItem "$Depot\*.appv" -Recurse | Get-AppVManifestInfo | Where-Object {$_.HasUserScripts } | Select-Object -Property Name, ConfigPath Name ConfigPath ---- ---------- WireShark C:\AppVPakete\WireShark\WireShark_4_6.appv
Nun ein Beispiel zum finden von Skripten über das externe Manifest:
Get-ChildItem "$Depot\*deploymentConfig.xml" -Recurse | Get-AppVDeploymentConfigInfo | Where-Object {$_.HasUserScripts -or $_.HasMachineScripts } | Select-Object -Property Name,ConfigPath Name ConfigPath ---- ---------- Acrobat_Pro_2015 C:\AppVPakete\BGETEM_Global_Acrobat_Pro_2015\Acrobat_Pro_2015\Acrobat_Pro_2015_DeploymentConfig.xml Firefox57 C:\AppVPakete\Firefox57\SkripteimPaket\Firefox57_DeploymentConfig.xml Firefox57 C:\AppVPakete\Firefox57\Firefox57_DeploymentConfig.xml XMind_3.5.3.0 C:\AppVPakete\old.DeploymentConfig.xml XMind_3.5.3.0 C:\AppVPakete\XMind_3.5.3.0_DeploymentConfig.xml
Anzeigen können wir u.a. damit auch Pakete mit Shell Extensions oder wie hier die größte Datei in jedem Paket:
Get-ChildItem "$Depot\*.appv" -Recurse | Get-AppVManifestInfo | Select-Object -Property Name, MaxfileSize, MaxfilePath | Sort-Object -Property MaxfileSize -Descending Name MaxfileSize MaxfilePath ---- ----------- ----------- Acrobat_Pro_2015 567044665 Root/Setup%20Files/%7BAC76BA86-1033-FFFF-7760-0E0F06755100%7D/Data1.cab Camtasia 263998976 Root/VFS/Windows/Installer/39f26b.msi vSphere_Client_5.1 232073216 Root/VFS/Windows/Installer/5512b.msi ideaJ 187353753 Root/VFS/ProgramFilesX64/Java/jdk-10.0.1/lib/modules AcrobatReader_10 126301733 Root/VFS/Common%20AppData/Adobe/Setup/%7BAC76BA86-7AD7-1031-7B44-AA1000000001%7D/Data1.cab DudenKorrektor 126197760 Root/VFS/Windows/Installer/45b1e.msi Gimp2 97523613 Root/VFS/Windows/Installer/584119.msi
Abschließend extrahieren wir alle Icons aus einem App-V Repository
#Get All icons ans save # First create Directory if(-not (Test-Path $("$env:USERPROFILE\desktop\out\"))) { New-Item $("$env:USERPROFILE\desktop\out\") -ItemType Directory } Get-ChildItem "$Depot\*.appv" -Recurse | Get-AppVManifestInfo | ForEach-Object ` {Save-AppVIcons -Path $_.ConfigPath -Iconlist $_.Shortcuts -ImageType ico -DestinationPath $("$env:USERPROFILE\desktop\out\" + $_.name + ".ico") -Verbose}
So ganz ohne Bilde ist auch nicht schön. So schaut es aus, wenn man mal sein App-V Contentverzeichnis komplett auslist und alle Icon Files extrahiert:
Der nächste Blog dazu veröffentlich das Skript für den AppV Serverreport. Dort werden alle Pakete und Einstellungen der Pakete gegenübergestellt.
Download:
Kommentare