Private/Wissen/X06_Technology_COMObjects.ps1
# ? TITEL COM-Objekte # ? DESCRIPTION 'Component Object Model' verwenden # ? TAGS COM WMI CIM # ? VERSION 2019.09.10 # Das Component Object Model ist eine von Microsoft entwickelte Technik # zur Interprozesskommunikation unter Windows. COM-Komponenten können sowohl in Form # von Laufzeitmodulen (DLLs) als auch als ausführbare Programme umgesetzt sein. # COM soll eine leichte Wiederverwendung von bereits geschriebenem Programmcode ermöglichen, # zum Teil auch über Betriebssystemgrenzen hinweg. COM-Komponenten können unabhängig # von der Programmiersprache eingesetzt werden. # Das Component Object Model wurde von Microsoft 1992 mit der grafischen Benutzeroberfläche Windows 3.1 eingeführt. Get-CimInstance -ClassName Win32_COMClass | Measure-Object # Davon können COM-Objekte erzeugt werden #region BEISPIEL Microsoft Excel # ! NACHTEIL (Excel bzw. Office muss installiert sein, Office PIA 2010 downloaden) # ? BESSER CSV oder 'OpenXML for Office' $xls = New-Object -ComObject "Excel.Application" $xls.Visible = $false # Debugging $wb = $xls.Workbooks.Add() $ws = $wb.Worksheets.Add() $a1 = $ws.Range("A1") $a1.Value2 = "PowerShell ist spitze!" $wb.SaveAs("c:\temp\meinmappe.xlsx") $xls.Quit() #endregion #region BEISPIEL Microsoft Word $word=New-Object -ComObject "Word.Application" $word.Visible=$true $doc=$word.Documents.Add() $win=$doc.Windows.Item(1) $win.View.ShowAll=$true $objAbs=$doc.Paragraphs.Item(1) $objAbs.Range.Text="Titel`rAbsatztext" $objAbs.Range.Text=($objAbs.Range.Text + "zweite Zeile") $objAbs=$doc.Paragraphs.Item(1) $objAbs.Style="Überschrift 1" $erg=$doc.PrintOut([ref]$false) # VORTEIL von COM-Object $erg=$doc.prin $erg $doc.SaveAs([ref]"c:\Temp\PS und Word.docx") $doc.Close([ref]$false) $word.Quit() $word=$null #endregion |