如果我想多次运行 PS 脚本,我可以使用 windows 调度程序,但是如果我需要多次运行某些代码而不是整个脚本怎么办?
我有脚本来监视远程服务器,我需要每秒检查一次处理器时间和每分钟的内存量。我不想将其拆分为更多单独的脚本,因为我正在监视数十个值。或者你对解决这个问题有什么不同的想法?
谢谢!
如果我想多次运行 PS 脚本,我可以使用 windows 调度程序,但是如果我需要多次运行某些代码而不是整个脚本怎么办?
我有脚本来监视远程服务器,我需要每秒检查一次处理器时间和每分钟的内存量。我不想将其拆分为更多单独的脚本,因为我正在监视数十个值。或者你对解决这个问题有什么不同的想法?
谢谢!
您也许可以为此使用 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"
备注:另一种解决方案是使用 Windows 窗体计时器