Flash info

Maître Yoda utilise PowerShell. Cette source encore non confirmée par Obi-Wan Kenobi aurait pour origine une conférence sur la force obscure de CMD. Que le POWERshell soit avec vous...

 
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

 
© 2017 PowerShell-Scripting.com