Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Erweiterte Dateieigenschaften mit Powershell-Funktion abfragen

Anleitung Entwicklung Batch & Shell

Mitglied: colinardo

colinardo (Level 5) - Jetzt verbinden

27.11.2013, aktualisiert 07.05.2014, 14241 Aufrufe, 3 Kommentare, 2 Danke


Beschreibung

Folgende Powershell-Funktion extrahiert die Erweiterten Dateieigenschaften wie man sie z.B. in den Eigenschaften einer Datei auf dem Tab Details anzeigen lassen kann.

131fbbdb55b84fc7773369dcd415d120 - Klicke auf das Bild, um es zu vergrößern

Das können z.B. solche Dinge wie EXIF-Details, Bildbreite, Bildhöhe, Bitrate, etc sein. Die Funktion fügt diese Eigenschaften den Datei-Objekten in der Pipeline als zusätzliche Eigenschaften hinzu. Beispiele dazu findet ihr weiter unten.

Powershell-Funktion : Add-ExtendedFileProperties

01.
function Add-ExtendedFileProperties{ 
02.
 <# 
03.
     .SYNOPSIS 
04.
        Fügt erweiterte Eigenschaften von Dateien an das Objekt in der Pipline hinzu 
05.
     .DESCRIPTION 
06.
        Extrahiert erweiterte Eigenschaften von Dateien wie z.B. Exif-Daten, Musik- bzw. Filmdetails 
07.
     .EXAMPLE  
08.
            Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite","Datenrate" | ft Name,Bildhöhe,Bildbreite,Datenrate 
09.
            Fügt alle nur die Eigenschaften "Bildhöhe","Bildbreite","Datenrate" als zusätzliche Spalten dem Objekt in der Pipline hinzu 
10.
     .EXAMPLE 
11.
            Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties | fl * 
12.
            Fügt alle verfügbaren erweiterten Eigenschaften dem Objekt in der Pipline hinzu 
13.
     .PARAMETER PropertyExtended 
14.
        Mit diesem Parameter geben sie eine Komma-Separierte Liste von Eigenschaften an welche sie erhalten möchten. 
15.
            -PropertyExtended "Bildhöhe","Bildbreite","Bitrate" 
16.
#> 
17.
    param( 
18.
        [Parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] 
19.
        $fileItem, 
20.
        [String[]] $PropertyExtended = "ALL" 
21.
22.
    begin 
23.
24.
        $shellObject = New-Object -Com Shell.Application 
25.
        $itemProperties = $null 
26.
27.
    process 
28.
29.
        if($fileItem.PsIsContainer) 
30.
31.
            $fileItem 
32.
            return 
33.
34.
        $directoryName = $fileItem.DirectoryName 
35.
        $filename = $fileItem.Name 
36.
 
37.
        $folderObject = $shellObject.NameSpace($directoryName) 
38.
        $item = $folderObject.ParseName($filename) 
39.
 
40.
        if(-not $itemProperties) 
41.
42.
            $itemProperties = @{} 
43.
            $counter = 0 
44.
            $columnName = "" 
45.
            if ($PropertyExtended -eq "ALL"){ 
46.
                 #get all properties 
47.
                do { 
48.
                    $columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter) 
49.
                    if($columnName) { $itemProperties[$counter] = $columnName } 
50.
                    $counter++ 
51.
                }while($columnName) 
52.
            }else{ 
53.
                #get user defined properties 
54.
                do { 
55.
                    $columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter) 
56.
                    foreach($name in $PropertyExtended){ 
57.
                        if ($columnName.toLower() -eq $name.toLower()){ 
58.
                            $itemProperties[$counter] = $columnName 
59.
60.
61.
                    $counter++ 
62.
                }while($columnName) 
63.
64.
65.
 
66.
        foreach($itemProperty in $itemProperties.Keys) 
67.
68.
            $fileItem | Add-Member NoteProperty $itemProperties[$itemProperty] ` 
69.
                $folderObject.GetDetailsOf($item, $itemProperty) -ErrorAction ` 
70.
                SilentlyContinue 
71.
72.
        $fileItem 
73.
74.
}

Parameter der Funktion

Parameter Beschreibung
-PropertyExtended [Optional] Namen der zu extrahierenden erweiterten Eigenschaften werden in einer Komma-Separierten Liste angegeben(bsp: "Bildhöhe","Bildbreite")

Beispielhafte Anwendung

Beispiel 1: Alle verfügbaren Erweiterten Dateieigenschaften von Dateien ausgeben
Get-ChildItem "C:\Ordner" | Add-ExtendedFileProperties | select *
Beispiel 2: Nur bestimmte Eigenschaften von Dateien ausgeben
Get-ChildItem "C:\Ordner" | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite" | select FullName,Bildhöhe,Bildbreite

Hinweise

Man sollte wenn möglich immer die zu extrahierenden Eigenschaften mit angeben, weil dies den Vorgang erheblich beschleunigt wenn nicht alle Eigenschaften extrahiert werden müssen.

Viel Spaß damit

Grüße @colinardo
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Mitglied: rubberman
30.11.2013, aktualisiert um 14:08 Uhr
Hallo colinardo,

sehr schöne Funktion!

Vor ein paar Jahren hatte ich mich auch schon mal intensiver damit beschäftigt. Um eine bestimmte Eigenschaft auszulesen, hatte ich die ExtendedProperty Methode ausgegraben, bei der man mit dem Namen der Eigenschaft direkt den entsprechenden Wert zurück bekommt.
Scripting mit Shell-Objekten ist und bleibt aber ein Alptraum. Mit GetDetailsOf bekommst du die deutschen Bezeichnungen, ExtendedProperty musst man hingegen mit den englischen Bezeichnungen füttern. So zieht sich das durch die gesamte Arbeit mit Shell-Objekten.
Hast du eine Idee, wie man aus diesem multilingualen Mist irgend etwas brauchbares machen kann? Ich meine kann man das MUI für ein Script irgendwie ausschalten oder irgendwie festlegen mit welcher Sprache man arbeiten möchte?

Grüße
rubberman
Bitte warten ..
Mitglied: colinardo
30.11.2013 um 15:10 Uhr
Zitat von rubberman:
Hast du eine Idee, wie man aus diesem multilingualen Mist irgend etwas brauchbares machen kann? Ich meine kann man das MUI für ein Script irgendwie ausschalten oder irgendwie festlegen mit welcher Sprache man arbeiten möchte?
Hallo rubberman,
wüsste ich jetzt nicht, das es solch eine Funktion gäbe. Mit entsprechendem Aufwand und der Hinterlegung von den gängigsten Sprachen mit dessen Übersetzungen der Eigenschaften in Arrays ließe sich das aber bewerkstelligen. Das tu ich mir jetzt aber nicht an

Grüße Uwe
Bitte warten ..
Mitglied: rubberman
30.11.2013 um 20:11 Uhr
Hallo colinardo,

ja nee, eine Übersetzungstabelle würde ich auch nicht erstellen. Gibt's ja offensichtlich auch schon (wenn auch in anderer Form). Alles was man da selbst übersetzt und einbindet ist redundant, potenziell fehlerbehaftet und beim nächsten Windowsupdate vielleicht schon veraltet. Ich hatte nur gehofft, dass sich da eine Einstellung oder eine Methode findet ... nicht lebensnotwendig natürlich

Grüße
rubberman
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell-Funktion - Credentials zur Anmeldeinformationsverwaltung (Tresor) hinzufügen (nativ ohne cmdkey.exe)
Tipp von colinardoBatch & Shell

In einem Beitrag kam mal die Frage auf ob sich Anmeldeinformationen nicht ohne eine cmdkey.exe nativ mit Powershell hinzufügen ...

Batch & Shell
Powershell elevated
Tipp von AnkhMorporkBatch & Shell2 Kommentare

Ein kleiner Tipp am Rande für alle PS-Novizen (ich wars einfach leid): Um eine Konsole mit elevated rights schnell ...

Batch & Shell
Weiterentwicklung von Powershell
Information von Penny.CilinBatch & Shell

Anbei ein Artikel im Heise Newsticker bzgl. Powershell: Systemverwaltung: PowerShell goes Cross-Plattform

Batch & Shell
Powershell: Googlemail (GMail) nativ mit Powershell verwalten
Anleitung von colinardoBatch & Shell2 Kommentare

1. Vorwort Google bietet über die GMail-API die Voraussetzungen um sein Google-Mail-Konto über diverse Programmierschnittstellen (PHP/Javascript/etc. pp) zu verwalten. ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 6 StundenBatch & Shell7 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 8 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...