Flash info

Prenez une longueur d'avance avec PowerShell. Faire ce choix c'est anticiper l'avenir des produits Microsoft mais aussi être plus performant dans son travail quotidien d'admin système.

 
Accueil arrow Bibliothèque de scripts arrow MS Office arrow Excel : Récupérer les propriétés étendues d'un document
Excel : Récupérer les propriétés étendues d'un document
Écrit par Arnaud Petitjean [MVP]   
03-09-2017

A la demande d'un utilisateur dans le forum j'ai créé une petite fonction qui permet de récupérer à partir d'un document Excel (testé avec Excel 2010 uniquement) les méta-données qui sont visibles lorsque l'on clique-droit et que l'on demande les propriétés (dans l'onglet Détails) d'un fichier.

Elles sont les suivantes (entre autre) : 

  • Nom de l'auteur,
  • Nom de l'auteur l'ayant enregistré pour la dernière fois,
  • Numéro de révision,
  • Date de création,
  • Date de dernier enregistrement,
  • Date de la dernière impression,
  • Etc.

Voici le code : 

#Requires -Version 2
# Get-ExcelDocumentMetadata.ps1
# Arnaud PETITJEAN - Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir

[CmdletBinding()]
   Param (
      [Parameter(Mandatory=$true)]
      [String] $FilePath
)
$application = New-Object -ComObject excel.application
$application.Visible = $false
$document = $application.workbooks.open($FilePath)
$binding = "System.Reflection.BindingFlags" -as [type]
$properties = $document.BuiltInDocumentProperties
$hash = @{}

foreach($property in $properties) {
   $hash += @{ [System.__ComObject].invokemember("name",$binding::GetProperty,$null,$property,$null) = & {
                                try { [System.__ComObject].invokemember("value",$binding::GetProperty,$null,$property,$null) }
                                catch { 'N/A'}
                            }
                      }
}

$application.quit([Ref]([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges))
New-Object -TypeName PSObject -Property $hash

 
© 2018 PowerShell-Scripting.com