终止powershell脚本的一部分并继续

时间:2018-04-05 14:58:58

标签: powershell

我创建了一个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

1 个答案:

答案 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 }