Помещаем это здесь, поскольку оно слишком велико для обычного комментария.
Почему вы не смотрите на свойства каждого из объектов, которые вам нужны, чтобы определить, есть ли свойство, прежде чем пытаться использовать а также обнаружение числового присвоения объекта, с которым вы пытаетесь работать.
Например:
$ppo = New-Object -ComObject powerpoint.application
$ppo.Visible = [Microsoft.Office.Core.MsoTriState]::msoTrue
$presentation = $ppo.Presentations.open($ppt)
$presentation.Slides[3].Shapes |
Select -First 1
$ppo |
Get-Member |
Out-GridView
$ppt |
Get-Member |
Out-GridView
$presentation |
Get-Member |
Select Method |
Out-GridView
$presentation.Slides[3].Shapes[1] |
Get-Member |
Out-GridView
Просто используйте фильтр в OGV, чтобы найти все доступные методы, и т. д. c. Как только вы увидите список, перейдите к ОМ, как определено.
# Create a new deck
Add-type -AssemblyName office
$Application = New-Object -ComObject powerpoint.application
$application.visible = [Microsoft.Office.Core.MsoTriState]::msoTrue
$slideType = 'microsoft.office.interop.powerpoint.ppSlideLayout' -as [type]
$blanklayout = $slideType::ppLayoutTitleOnly
$presentation = $application.Presentations.add()
$slide = $Presentation.Slides.Add($presentation.Slides.Count + 1, 15)
# Maually add a few objects, then manully run these lines to see the changes
# Change the font of the main window
$presentation.Slides[1].Shapes[1].TextFrame.TextRange.Font.size = 42
# Select a shape
$presentation.Slides[1].Shapes[3].Select()
# Change the ZOrder
$Application.ActiveWindow.Selection.ShapeRange.ZOrder(3)
# Clean-up
$Application.quit()
$Application = $null
[gc]::collect()
[gc]::WaitForPendingFinalizers()
Stop-Process -Name POWERPNT -ErrorAction SilentlyContinue -Force