Issue

The properties of a file should be exported to a text file using a template.


Solution

The first step is to create a template, the format of the template is quite flexible. In this example the following html template is used:

<html>
 <table border="1">
  <tr>
   <td>{Author}</td>
   <td>{Classification}</td>
   <td>{Created By}</td>
  </tr>
 </table>
</html>


The following script will then replace the property names with their corresponding values:

$templatePath = "C:\temp\template.txt"
$destinationPath = "C:\temp\template.html"

$regex = [regex]"\{+(?i)\b[A-Z\s]+\b\}"
$template = Get-Content -Path $templatePath
$propertyMatches = $regex.Matches($template)
foreach($propertyMatch in $propertyMatches){
    $propertyName = $propertyMatch.Value.Trim( @('{','}') )
    $propertyValue = $file.$propertyName
    $template = ($template -replace $propertyMatch.Value, $propertyValue)
}
Write-Host $template
$template | Out-File $destinationPath -Append
  • Define the template file that should be used 
  • Define the destination file that should be created / appended to
  • Match the regex against the content of the template file to find the required properties
  • Replace all the property names in the template file with their actual values
  • Write the result to the destination file

Example

Using the template shown before the output should look similar to this:

<html>
 <table border="1">
  <tr>
   <td>Assembly1.dwg</td>
   <td>Design Document</td>
   <td>Administrator</td>
  </tr>
 </table>
</html>


Remarks

  • This code snippet will always use the same destination file and append to it.