Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
166 views
in Technique[技术] by (71.8m points)

PowerShell - How can I open each PPTX in a collection?

I am trying to extract the hyperlinks from PPTX's. I can do it with a single named pptx thus:

$array = New-Object System.Collections.ArrayList
Add-Type -AssemblyName Office
$objPPT = New-Object -ComObject powerpoint.Application

$Doc = $objPPT.Presentations.Open("C:empppt2.pptx", $Null,$Null,[Microsoft.Office.Core.MsoTriState]::msoFalse)
$Slides = $pptDoc.Slides
Foreach ($Slide in $Slides) {

    $Links = $Slide.Hyperlinks
    Foreach ($Link in $Links) {

       $array.add([pscustomobject]@{
            Text      = $Link.TextToDisplay
            HyperLink = $Link.Address
        }) | out-null
    }
}

But when I try to use a collection, it does not work:

$parentFolder = "C:emp"
$array = New-Object System.Collections.ArrayList
Add-Type -AssemblyName Office
$objPPT = New-Object -ComObject powerpoint.Application

$ourPPTs = Get-ChildItem -Recurse -LiteralPath $parentFolder -file -Filter *.ppt*

$ourPPTs | ForEach-Object{
    $pptDoc = $objPPT.Presentations.Open($PSItem, $Null,$Null,[Microsoft.Office.Core.MsoTriState]::msoFalse)
$Slides = $pptDoc.Slides
Foreach ($Slide in $Slides) {
    "Slide"
    "-----"
    $Slide
    $Links = $Slide.Hyperlinks
    Foreach ($Link in $Links) {
        "Link"
        "----"
        $Link
       $array.add([pscustomobject]@{
            Text      = $Link.TextToDisplay
            HyperLink = $Link.Address
        }) | out-null
    }
}
}

I thought $PSItem referenced the current object in the collection. It works with word docs, but not with PPT's.

question from:https://stackoverflow.com/questions/65928896/powershell-how-can-i-open-each-pptx-in-a-collection

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...