簡體   English   中英

Powershell 2事件處理

[英]Powershell 2 event handling

我正在嘗試使用Powershell 2.0編寫Powerpoint腳本。

網站說有一個“ PresentationOpen”事件。 但是,Get-Member不顯示此事件。 另外,當我嘗試執行此操作時:

register-objectevent $application PresentationOpen notification_event

它說:“無法注冊事件。名稱為'PresentationOpen'的事件不存在。”

為什么無法從PowerShell訪問此事件? 我做錯了嗎,還有另一種方法嗎?

我真正想做的是等到演示文稿完全加載后再將其保存為另一種格式。 不等待有時會導致PPT凍結。

感謝您的幫助!

PowerShell對COM的支持非常薄弱(它比CB更像C#,而不是VB)。 在這種情況下,您將必須委托事件。 請參閱此頁面上的調度: http : //support.microsoft.com/kb/308825/EN-US/

可能還有其他(更好的)方法可以這樣做,但這應該可以幫助您入門:

$ppa = New-Object -ComObject PowerPoint.Application
$eventId = Register-ObjectEvent $ppa PresentationOpen -Action { "Hi" }
$ppa.Visible = 1
$ppa.Presentations.Open("Path\To\Presentation.ppt")

您可能想在第二行的-Action之后用任何可以進行處理/保存的代碼替換腳本塊。

如果您注冊的事件有任何輸出,則可以通過Receive-Job cmdlet處理它,否則,您可以在Open()方法調用之后直接添加與此類似的循環以阻止進一步的腳本執行,直到滑板已完成打開:

While ((Get-Job $eventId).State -neq "Completed") { Start-Sleep -m 250 }
Receive-Job $eventId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM