Search notes:

System.Type InvokeMember

COM / Excel example

set-strictMode -version latest

$xls = new-object -com excel.application

$xls.Gettype().InvokeMember(
   'Visible',                                      # Name
   [System.Reflection.BindingFlags]::SetProperty,  # Invoke attributes
   $null,                                          # Binder
   $xls,                                           # Target
   @($true),                                       # Arguments
   $null                                           # Culture
)

$wbs = $xls.GetType().InvokeMember(
   'Workbooks',
   [System.Reflection.BindingFlags]::GetProperty,
   $null,
   $xls,
   @(),
   $null
)

$wb = $wbs.GetType().InvokeMember(
   'Add',
   [System.Reflection.BindingFlags]::InvokeMethod, # also seemd to work with GetProperty!
   $null,
   $wbs,
   @(),
   $null
)


#
#    Use named parameters for SaveAs
#

$wb = $wb.GetType().InvokeMember(
   'SaveAs',
   [System.Reflection.BindingFlags]::InvokeMethod,
   $null,
   $wb,
   @(                                              # Values of parameters
      "$env:temp\test.xlsm",
      52  # xlOpenXMLWorkbookMacroEnabled
   ),
   $null,                                          # Modifiers
   $null,                                          # Culture
   [string[]] @(                                   # Names of parameters
      'FileName',
      'FileFormat'
   )
)

$xls.Gettype().InvokeMember(
   'Quit',
   [System.Reflection.BindingFlags]::InvokeMethod,
   $null,
   $xls,
   @(),
   $null
)
Github repository .NET-API, path: /System/Type/InvokeMember/COM-Excel.ps1

See also

System.Reflection.BindingFlags
System.Reflection.DefaultMemberAttribute

Links

This stackoverflow answer was very helpful for the COM / Excel example.

Index