Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName Office
Add-Type -AssemblyName Microsoft.Office.Interop.Powerpoint
#Getting Error - Add-Type -AssemblyName Office Microsoft.Office.Interop.Powerpoint.Slide.SlideShowTransition.Hidden
Function RunSlide {
$pptx = "h:\Test.ppt"
$osld = "Slide"
[bool] $sldState = "Slide.SlideShowTransition.Hidden"
$state = "False"
$hiddenCount = 0
$cc = 0
$application = New-Object -ComObject powerpoint.application
$presentation = $application.Presentations.open($pptx)
$count = 1
Start-Sleep -Seconds 3
ForEach ($osld In $Presentation.Slides)
{
$cc = $cc + 1
If ($sldState -eq "False") {$hiddenCount = $hiddenCount + 1; Write-Host "Slide State $sldState"}
Write-Host "Hidden Count is $hiddenCount"
$endCount = $presentation.Slides.Count
Write-Host "Total slide count is $endCount"
#Present Slide Show
[System.Windows.Forms.SendKeys]::SendWait("{F5}")
do
{
Start-Sleep -Seconds 6
[System.Windows.Forms.SendKeys]::SendWait("{RIGHT}")
$count = $count + 1
Write-Host "Slide Count is $count"
}
while ($count -le $endCount)
Write-Host "POWER POINT RESTARTING"
Stop-Process -processname POWERPNT
}
$b -eq 1
do {
$d = Get-Date
Write-Host "Slide ran as at $d"
CheckSlide
RunSlide
Start-Sleep -Seconds 3
}
While ($b = 1)
所以我限制使用powershell(新的工作策略),因此我正在调整我们现有的wscript和vbscript文件到Powershell。Powershell - 计数隐藏的Powerpoint幻灯片
我们有一个信息墙,使用超级链接到PowerPoint演示文稿。它会定期更新,因此需要打开,然后关闭并重新打开。
到目前为止,我设法做到了这一点。但是由于隐藏幻灯片的数量和我的代码的性质,脚本有时会比它运行的时间长得多(有时可能会多达40个幻灯片)。
我的脚本检查POWERPOINT进程是否正在运行,如果没有,则继续并打开文件。然后,它会做一个幻灯片计数,并运行演示文稿的演示文稿的长度(增加计数,直到它达到总数)。
一旦完成它将停止进程,底部的Do循环将再次打开文件。冲洗重复。
问题是,总幻灯片计数也计算隐藏的幻灯片。
我试图用ForEach循环实现的是让脚本查看每个幻灯片状态,如果隐藏它将添加到计数。从总数中减去此计数,Do循环使用此计数来呈现正确数量的显示幻灯片。现在,ForEach循环只是报告计数,而不是减法(因为我不能计算隐藏的数量)
我意识到可能有更简单的演示方法,但是从Vb到PS的转换已经完成了我的工作进来,这只是简单的不工作!获得一些隧道视野和我们有限的互联网接入也阻碍了进步。如果任何人都可以看看,并告诉什么是多余的,我可能错过了什么,将不胜感激。谢谢,
我的第一个猜测是,这将始终评估为$ true:[BOOL] $ sldState =“Slide.SlideShowTransition .Hidden“ –