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「 –