App-V Buch
Unser App-V
Buch

- App-V Infrastruktur
- App-V Client
- App-V Sequenzierung
- Tools & Troubelshooting
- PowerShell mit App-V

Image is not available
Services
Image is not available
Image is not available
Image is not available
Image is not available
Image is not available
Image is not available

Hochwertige Lösungen mit bestem Kundenservice

Terminalserver- und Desktop Umgebungen mit der besten Usability

Schulungen und Workshops

Intuitive individuelle Lösungen

Standartanwendungen
App-V SaS über 20 Standardanwendungen

Alle wichtigen Browser

Wichtige Standardanwendungen

Wöchentlich aktuallisiert

Mit Support

Individuelle Anpassungen sind möglich

Schnell auf Sicherheitslücken reagieren

Bonus: Einige MSIX Pakete für WVD

App-V Buch
Services
Innovative IT-Lösungen
previous arrow
next arrow
Schriftgröße: +
3 minutes reading time (671 words)

App-V PowerShell Module AppVForcelets

App_V_Block_2020_Light

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:

Icons Extracted

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:

Downloads:

zipAppVForcelets Beliebt

Information
Erstelldatum 26.01.2020 21:27:02
Änderungsdatum 26.01.2020 22:13:54
Version 1.3
Dateigröße 131.61 KB
Erstellt von Andreas Nick
Geändert von Andreas Nick
Downloads 1.820
Lizenz
Preis

 

App-V Server- und Depotreport
PowerShell Codesignaturen und Upload in die Power...

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Freitag, 13. Dezember 2024

Sicherheitscode (Captcha)

Nick Informationstechnik GmbH
Dribusch 2
30539 Hannover

+49 (0) 511 165 810 190
+49 (0) 511 165 810 199

infonick-it.de

Newsletter

Anmeldung zum deutschen M.A.D. Newsletter mit Informationen zur Anwendungsvirtualisierung!

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.