PowerShell: determinare i metadati di un file
Nel caso sia necessario accedere ai metadati di un file, ovvero a quelle informazioni visualizzate nella scheda Dettagli delle proprietà di un file è possibile utilizzare il metodo GetDetailsOf di un oggetto Shell.Application.
Il metodo GetDetailsOf ha i seguenti due parametri come indicato in Folder.GetDetailsOf method (Shlobj\_core.h) – Win32 apps | Microsoft Learn:
vItem
Type: Variant
The item for which to retrieve the information. This must be a FolderItem object.
iColumn
Type: Integer
An Integer value that specifies the information to be retrieved. The information available for an item depends on the folder in which it is displayed. This value corresponds to the zero-based column number that is displayed in a Shell view.
Il parametro iColumn ha come valore minimo -1 (che permette di recuperare le informazioni sul suggerimento per l’elemento). Per quanto riguarda il valore massimo di iColumn, non esiste un valore massimo definito. Il numero di informazioni disponibili dipende dal tipo di cartella e dalle estensioni della shell installate.
Di seguito un esempio di codice PowerShell per visualizzare i metadati che hanno valori non nulli iterando i valori di iColumn da -1 a 0xFFFF:
$filePath = “C:\Sample\test.exe”
$shellApp = New-Object -ComObject Shell.Application
$folderObject = $shellApp.NameSpace((Get-Item $filePath).DirectoryName)
$fileObject = $folderObject.Items().Item((Get-Item $filePath).Name)for ($i = -1; $i -lt 0xFFFF; $i++) {
$propertyName = $folderObject.GetDetailsOf($null, $i)
$propertyValue = $folderObject.GetDetailsOf($fileObject, $i)if ($propertyValue) {
Write-Host “[$i] $propertyName = $propertyValue”
}
}
Di seguito un esempio di output
Come si può vedere i metadati ottenuti all’incirca quelli disponibili nella scheda Dettagli delle proprietà dei file, ad esempio mancano le proprietà Tag e Numero revisione e ve ne sono alcune che nella scheda Dettagli non compaiono, ma il linea di massima è possibile ritrovare quelle di uso generale.
A riguardo si vedano anche:
- Hey, Scripting Guy! How Can I Find Files’ Metadata? – Scripting Blog [archived] (microsoft.com)
- Hey, Scripting Guy! How Can I Search a Folder For All the Image Files That Are Not a Specified Height and Width? – Scripting Blog [archived] (microsoft.com)
- Hey, Scripting Guy! How Can I Search a Folder For All the Image Files That Are Not a Specified Height and Width? – Scripting Blog [archived] (microsoft.com)