Google Reviews
If you find this content or our services useful, please leave us a review.

Here’s a quick snippet that details how to get and set custom document properties in Microsoft Word 2010 documents:

#Create Word application
$wordApplication = New-Object -ComObject word.application

#Get reference to word doc
$document = $"C:\temp\alkane.docx");

#set up binding flags for custom properties
$binding = "System.Reflection.BindingFlags" -as [type];        
$customProperties = $document.CustomDocumentProperties

[Array]$propertyName = "ExampleProperty"
[Array]$propertyValue = "Example Value"

#Get property value
$myProperty = [System.__ComObject].InvokeMember("Item", $binding::GetProperty, $null, $customProperties, $propertyName)
$myPropertyValue  = [System.__ComObject].InvokeMember("value",$binding::GetProperty,$null,$myProperty,$null);

#Set property value

#Update all fields
$document.Fields.Update() | Out-Null

#save and close document

#required for O365
$document.Saved = $false;



Get and Set Microsoft Word Custom Document Properties

4 thoughts on “Get and Set Microsoft Word Custom Document Properties

  1. I’ve been trying to get this to work on two different Windows 10 computers, one running Office 2013 (msi) and the other running Office 2016 (msi).  I get an error stating “Object reference not set to an instance of an object” on line 10 ($customPropertiesType = $customProperties.GetType()).  

    Interestingly, this problem does not occur on a Windows Server 2012 R2 machine running Office 2013.  I’ve tried similar scripts from the scripting guys and other sites, but this same problem keeps arising.  I don’t know enough about theses objects and methods to understand why this would work in Windows Server 2012R2 but not on Windows 10.  Any ideas?

  2. Hi,

    I solved this by disabling line 10. And replace every “$customPropertiesType” by “[System.__ComObject]”, line 16 and 21.

  3. I’m also having the same issue with line

    $customPropertiesType =$customProperties.GetType()

    Windows 10.

    As suggested I’ll replace it with [System.__ComObject]


Comments have now been disabled. If you have a question to ask about this post please ask the community!