我创建了一个PowerShell脚本,它读取远程PC注册表项,然后将它们打印到html页面。
有时远程PC冻结/挂起等等。这会使每个冻结的PC的最终html页面增加大约40秒。
我如何计算我的脚本的一部分时间,让我们说1-2个命令,如果那个时间太大,我终止该命令并继续使用PC名称阵列中的下一个PC的脚本? 或者解决方案可能不在时间上,还有其他方法吗?谢谢!
Smth喜欢:
对于计时器计数, $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('Users', $remote[$i])
+ timer
并行运行+ if condition
。当计数器达到阈值terminate OpenRemoteBaseKey & continue
答案 0 :(得分:1)
将该语句作为作业执行。监控工作之外的时间。如果作业的运行时间超过您的预期,请将其删除。
$job = Invoke-Command `
-Session $s
-ScriptBlock { $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('Users', $remote[$i]) } `
-AsJob `
-JobName foo
$int = 0
while (($job.State -like "Running") -and ($int -lt 3)) {
Start-Sleep -Seconds 1
$int++
}
if ($Job.State -like "Running") { $job | Stop-Job }