Powershell 5: Dateien: Merkmale und Bewertungen löschen

ral9004

Lieutenant
Registriert
Dez. 2017
Beiträge
550
Hallo

Wie kann ich mit einem Powershell Skript die persönlichen Eigenschaften in JPG-Dateien wie "Bewertungen" oder "Markierungen" (engl. "Tags") löschen?

properties.png


Dateiattribute wie "Read only" kann ich ja via Powershell setzen:
PowerShell:
Set-ItemProperty $quelldatei -Name IsReadOnly -Value $false

Da es sich um mehrere Tausend JPG Dateien handelt, wäre der Weg über die CLI der effizienste.
Das CLI Tool "exiftool" hilft hier nicht weiter, weil es keine Exif Eigenschaften sind.

Grüsse
 
Hallo aragorn92

In der Beschreibung zu diesem Cmdlet steht
Löscht die Eigenschaft und deren Wert aus einem Element.

Am Ende des Artikels fand ich den Hinweis auf das Cdmlet "Clear-ItemProperty"
Löscht den Wert einer Eigenschaft, löscht die Eigenschaft jedoch nicht.

Auf SS64.com fand ich den Hinweis, dass der Befehl nur für die Registry verwendet werden kann:
Delete a property and its value from an item. This cmdlet can delete registry values and the data that they store.

Grüsse
 
ral9004 schrieb:
löscht die Eigenschaft jedoch nicht.

soweit ich das weiß, sind die auch nicht löschbar, da die automatisch angezeigt werden, egal ob dafür Eigenschaften oder Daten an der Datei hängen.
Das wird einfach vom Explorer aufgrund des Dateityps angezeigt. Sobald entsprechende Werte gesetzt werden, wird das auch an die Dateieigenschaften erst mit eingetragen.
Sprich du kannst die Werte leeren und damit "entfernen" aber die werden dir dennoch angezeigt im explorer, je nach dateityp
 
Zuletzt bearbeitet:
Was du brauchst ist eine Tool um die EXIF Informationen einer Datei zu bearbeiten. Diese sind in der Datei gespeichert und sind keine Eigenschaften der Datei selbst.
Spontan habe ich z.B. das gefunden: https://exiftool.org/ Musst du dich etwas durch die Doku arbeiten.
Edit: Auszug aus der Doku:
-all=Deletes all meta information! †
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: madmax2010
Hallo Nilson

Wie ich eingangs geschrieben sind Exif Tools keine Hlfe. Weil es sich nicht um ETIF Felder handelt.
ETIF Felder beinhalten technische Informationen zu den Fotos. "Tags" bzw. Merkmale gehören nicht dazu.

Grüsse
Ergänzung ()

Hallo Sebbi

Auf der Bildschirmkopie im ersten Tag siehst Du, wie Du sie unter Windows löschen kannst.
Jedoch dauert der Vorgang auf einer SSD für 218 JPGS über 40 Min.

Daher suche ich nach einer CLI Lösung. Einfach über Nacht über einen Verzeichnisbaum laufen lassen und alle Fotos bereinigen.

Grüsse
 
ral9004 schrieb:
Auf der Bildschirmkopie im ersten Tag siehst Du, wie Du sie unter Windows löschen kannst.

ja, das löscht den Inhalt der Merkmale etc, wenn du aber wieder drauf gehst, hast du die Merkmale immernoch als Liste vorliegen, nur eben leer.

genau das macht auch der PS Befehl von @aragorn92
 
Hallo Sebbi
Falsch. Hast Du die Referenz gelesen, die aragorn92 verlinkt hat?
Hast Du im Netz recherchiert?
Hast Du auf einem Windows in einer JPG Datei damit "Merkmale" (eng "Tag") entfernt
Dann poste hier Deinen Code.

Anderfalls ist einfach eine Behauptung ohne besseres Wissen

Grüsse
Ergänzung ()

Yuuri schrieb:
Hallo Yuuri

Das sieht sehr gut aus! Vielen Dank!
Leider gibt es dieses Modul in der Gallery nicht mehr.
Ich habe es hier wieder gefunden:
https://www.powershellgallery.com/packages/FC_SysAdmin/5.1.0/Content/public\Get-FileMetaData.ps1

Jedoch läuft es in einen Fehler:
PowerShell:
Export-ModuleMEmber : Das Cmdlet "Export-ModuleMember" kann nur innerhalb eines Moduls aufgerufen werden.
In C:\temp\pic\Get-FileMetaData.ps1:98 Zeichen:2
+ }Export-ModuleMEmber -Function Get-FileMetaData

Ich hoffe darauf eine funktionierende Lösung zu finden. Andernfalls muss ich das Skript am Sonntag debuggen :-/

Grüsse
Ergänzung ()

Yuuri schrieb:
Hallo Yuuri
Ich vergass auf Deine zweite URL einzugehen. Dort steht man muss über ein COM Objekt gehen.
Powershell und COM ist unsäglich langsam. Natürlich verwende ich es, wenn es keine Alternative gibt.

Für C# habe ich noch einen Ansatz gefunden:
https://learn.microsoft.com/en-us/d...propertyitem?view=dotnet-plat-ext-8.0#remarks

Last but not least: Warum macht MS es so schwierig? Für "„Alternate Data Stream“ (ADS) gibt es von SysInternals das Tool "Streams". Für diese Meta Info liefert MS einfach nichts...

Grüsse
 
Zuletzt bearbeitet:
Scroll mal im ersten Link nach unten.

Einmal gibts das Cmdlet etwas angepasst: https://stackoverflow.com/a/77252825

Das funktioniert so auch. Brauchst dann halt das Äquivalent zum Setzen/Entfernen, jetzt wo der Fetch zumindest klappt.

Und ganz unten ist der angepasste Link zum Original: https://www.powershellgallery.com/packages/FC_SysAdmin/5.0.0/Content/public\Get-FileMetaData.ps1
Ergänzung ()

ral9004 schrieb:
Last but not least: Warum macht MS es so schwierig? Für "„Alternate Data Stream“ (ADS) gibt es von SysInternals das Tool "Streams". Für diese Meta Info liefert MS einfach nichts...
NTFS Streams sind wieder etwas komplett anderes und haben nichts mit den Metadaten zu tun. Und es gibt "keine" Doku, da es eben generische Streams sind. Deine Frage könnte auch "Wieso liefert MS keine Doku zu XML?" lauten.

Bspw. ein NTFS Stream ist, wenn du Dateien aus dem Internet lädst. Dann existiert da der Stream :Zone.Identifier. Hat aber wie gesagt nichts mit den Details zu tun.
 
Zuletzt bearbeitet:
Hallo Yuuri

Danke für den Nachtrag. In diesem StackOverflow Post steht genau das, wo ich auch stehe:
ps-error.png


Ich werde mir morgen Sonntag Zeit nehmen für dieses Modul. Vielleicht überrede ich es ja noch zum funktionieren.

Off Topic
Natürlich sind ADS etwas "anderes". Sie sind eine Funktion von NTFS. D.h. von MS. Dort habe ich jedoch bessere / mehr Optionen damit zu arbeiten.
Diese "Metainformationen" sind auch von MS. Und genau so "kritisch" wie ADS, weil sie verdeckte Informationen enthalten können. "My Point of View".

Grüsse
 
Zurück
Oben