Powershell dinámicamente agregar imagen a la palabra

2

Un poco de ayuda con esto, estoy tratando de insertar imágenes dinámicamente en un documento de Word. Poco de historia, tengo una carpeta de aproximadamente 1000 png. Deseo insertar cada png en su propio documento de Word, y luego guardar como una palabra .docx (Salvando sé cómo obtener), actualmente tengo un bucle para obtener cada documento, pero parece que no puedo encontrar la forma de agregar la imagen, sin codificar la ruta de cada archivo. Por favor Aconseje, todavía un poco nuevo para powershell

    $Source = "C:\test"

$word_app = New-Object -ComObject word.application

Get-Childitem -Path $Source -recurse |  Where-Object { $_.extension -eq  ".png"} | % {
  $word_app.Visible = $True  
  $objDoc = $word_app.Documents.Add()  
  $objSelection = $word_app.Selection 

  $objShape = $word_app.Shapes 
  [void] $objShape.AddPicture() 
}
Josh Adams
fuente
Para cada iteración de su ForEach-Object ( % ), el archivo .png actual estará representado por $_.
root
1
Y no olvides guardar.
harrymc

Respuestas:

0
$Source = Get-Childitem -Path C:\test -recurse |  Where-Object { $_.extension -eq  '.png'}
    $word_app = new-object -comobject word.application

     ForEach ( $i in $Source ) {
        $word_app.Visible = $True
        $objDoc = $word_app.documents.add()
        $objSelection = $word_app.Selection
        $ImageName = $i.FullName
        $objSelection.InlineShapes.AddPicture($ImageName)
        $objSelection.InsertCaption(-1, "`t $i")
        $filename = "c:\\test\" + $i.BaseName + ".docx"
        $objDoc.SaveAs([REF]$filename)
        $objDoc.Close()
     }

    # Close Word
    $word_app.Quit()
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objDoc)
Antony
fuente