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

Mitglied: colinardo

colinardo (Level 5) - Jetzt verbinden

27.11.2013, aktualisiert 07.05.2014, 18100 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
Sicherheit

Prüfskript gegen Spectre und Co. wurde erweitert

Tipp von DerWoWussteSicherheit

Moin. Get-SpeculationControlSettings sagt sicherlich den meisten etwas. Mit den neuen Spectrevarianten muss man nun weitere Schritte machen, um zu ...

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

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. ...

Batch & Shell

Weiterentwicklung von Powershell

Information von Penny.CilinBatch & Shell

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

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 1 TagDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 1 TagSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 2 TagenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 2 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Glasfaserkabel verlegen und Anschlüsse setzen
Frage von LLL0rdLAN, WAN, Wireless21 Kommentare

Hallo Leute, ich muss demnächst ein Netzwerkkabel auf einer Länge von ca. 70 Metern verlegen. Das Netzwerkkabel soll dabei ...

Windows Server
Mac Rechner im Windows Netzwerk - was jetzt?
gelöst Frage von Kopfg3ldWindows Server18 Kommentare

Hallo zusammen, ich habe folgende Herausforderungen. Aber erst mal was kurz zum Netzwerk - Windows Server (ältester ist ein ...

Datenbanken
MySQL Schleife in Stored Procedure
Frage von facebrakerDatenbanken15 Kommentare

Hallo, ich bin gerade echt am grübeln. Ich habe in meiner DB, bestimmte Zeiträume gespeichert. z.B. User_ID ; von ...

Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...