2012-09-10 54 views
0

如果我想多次運行PS腳本,我可以使用Windows調度程序,但是如果我需要運行幾次某些部分代碼而不是整個腳本,該怎麼辦?powershell - 如何多次運行代碼的特定部分

我有腳本來監視遠程服務器,我需要檢查每秒處理器時間和每分鐘的RAM數量。我不想將它分成更多獨立的腳本,因爲我正在監視數十個值。或者你有一些resolvint不同的想法?

謝謝!

+0

你使用Get-計數器Windows窗體? http://technet.microsoft.com/en-us/library/hh849685.aspx – nimizen

+0

是的,我使用Get-Counter來獲取處理器時間。 – culter

回答

1

您也許可以使用WMI計時器的

PS C:\> $iClsTimer = [wmiclass]"__IntervalTimerInstruction" 
PS C:\> $iTimer = $iClsTimer.CreateInstance(); 
PS C:\> $iTimer.TimerId="MonEvtTimer" 
PS C:\> $iTimer.IntervalBetweenEvents= 2000 
PS C:\> $iTimer.SkipIfPassed=$true 
PS C:\> $iTimer.Put() 

Path   : \\.\root\cimv2:__IntervalTimerInstruction.TimerId="MonEvtTimer" 
RelativePath : __IntervalTimerInstruction.TimerId="MonEvtTimer" 
Server  : . 
NamespacePath : root\cimv2 
ClassName  : __IntervalTimerInstruction 
IsClass  : False 
IsInstance : True 
IsSingleton : False 

PS C:\silogix> $query = "Select * From __TimerEvent Where TimerID='MonEvtTimer'" 
PS C:\silogix> Register-WMIEvent -Query $query -Action {write-host "Timer"} 

Id    Name   State  HasMoreData  Location  Command 
--    ----   -----  -----------  --------  ------- 
2    19e70483-2a0... NotStarted False       write-host "Timer" 

備註:另一種解決方案是使用定時器

+0

謝謝JPBlanc,這看起來很有用。現在我不知道如何在ISE中停止它:)....我必須切換到PowerGUI。 – culter

+0

您可以嘗試Get-event |除去-事件 – JPBlanc