我遇到了問題。
1.第一種情況
過程已經開始。
我想在當前過程完成後做些事情。
例如
$process=[System.Diagnostics.Process]::GetProcessesByName("notepad")
而
Register-ObjectEvent $process Exited -Action {}
但在這種情況下,它不工作
如何註冊事件「已退出」?
2.第二種情況
該過程尚未啓動。 如何,我可以等待啓動過程?)Powershell中的進程
回答
第一部分是由馬蒂亞斯R.傑森與[System.Diagnostics.Process]::GetProcessesByName("notepad") | foreach {Register-ObjectEvent $_ Exited -Action { ... } }
對於第二部分回答,解決的辦法是下面。幸得這裏PDQ.com - Register-ObjectEvent
您需要使用WQL查詢來監視進程啓動事件,然後建立一個查詢觀察者將在一些過程的響應觸發事件起步,然後Register-ObjectEvent
在該觀察者聽。代碼複製粘貼:
$Query = New-Object System.Management.WqlEventQuery "__InstanceCreationEvent", (New-Object TimeSpan 0,0,1), "TargetInstance isa 'Win32_Process'"
$ProcessWatcher = New-Object System.Management.ManagementEventWatcher $query
$Action = { New-Event "PowerShell.ProcessCreated" -Sender $Sender -EventArguments $EventArgs.NewEvent.TargetInstance }
register-objectEvent -InputObject $ProcessWatcher -EventName "EventArrived" -Action $Action
好的,'Register-WMIEvent'也是這裏的一個選項 –
@ MathiasR.Jessen你可以把這個東西加入到這個答案中,它是c-維基。 – Vesper
@Vesper 我不喜歡WMIEvent!)我會嘗試Vesper的方式!多謝! –
- 1. 獲取PowerShell進程的進程ID
- 2. Powershell等待進程
- 3. PowerShell,Object =啓動進程?
- 4. PowerShell終止多個進程
- 5. PowerShell進程CPU檢查
- 6. Powershell獲取進程查詢
- 7. Powershell啓動進程Java PassThru
- 8. 在PowerShell中停止多個進程
- 9. 從進程中運行PowerShell中的作用不同,那麼從PowerShell ISE中
- 10. 將子進程的輸出重定向到父進程 - Powershell
- 11. Powershell獲取具有ID進程的特定進程計數器
- 12. C#Stop-PowerShell的進程命令
- 13. Powershell的停止進程空PARAM
- 14. 調試運行在遠程進程中的powershell
- 15. 進口-CSV Powershell的
- 16. PowerShell進程檢查啓動了太多進程
- 17. Powershell等到進程完成同時進程運行
- 18. Powershell的LogonScript如何保持剛開始的進程中打開
- 19. 如何從Windows Powershell調用Java進程?
- 20. 如何使用PowerShell獲取CRM進程?
- 21. ASP.NET進程開始PowerShell腳本IIS 7.5
- 22. 無法從powershell啓動進程
- 23. PowerShell腳本等待進程完成
- 24. 啓動進程與空間powershell
- 25. 執行腳本後終止PowerShell進程
- 26. Powershell啓動進程創建新變量
- 27. PowerShell - 捕獲套接字和進程
- 28. powershell v2 - 如何獲得進程ID
- 29. powershell運行java進程問題
- 30. get-wmiobject使用powershell殺死進程
'GetProcessesByName'返回的過程陣列,'註冊-ObjectEvent $工藝[0]已退出清議' –
感謝您的幫助{<#在這裏#codez>}!這就是我正在尋找第一個問題! –
嗯....順便說一句IF($ process.HasExited){} –