Powershell 脚本:-erroraction 'silentlycontinue' 和 try/Catch 块脚本执行缓慢



(已解决:由于添加try-catch或将错误重定向到null的延迟,我遇到的延迟/问题不是。这是使用非真实用户名测试脚本的结果,而不是实际的/生产名称。AD查找时间明显不同——以前没有想过。(

我一直在编辑https://github.com/dafthack/DomainPasswordSpray对于一个工作项目,目的是添加日志记录。脚本每秒向日志文件输出大约6次,这会引发关于文件可访问性的ioexception错误。这是一个非终止错误。

我对错误和可能未记录的信息没有意见。然而,它扰乱了控制台。

由于这是一个非终止错误,我尝试设置content-erroraction"silentlycontinue",但错误仍然显示。然而,并没有可衡量的性能影响——只是一个杂乱的控制台。

因此,进一步研究,我尝试了一个try/catch块,它确实消除了控制台中的错误,但脚本现在需要2倍多一点的日志才能运行。

还有第三种选择吗?

我可以通过将数据列表一分为二,并同时运行两次脚本来缓解这种情况。但这还不够理想,因为我实际上已经在分解数据列表以加快过程。(单个列表需要2个小时,目标是30米,所以我需要8个窗口来维持当前的时间…(

不管怎样。希望这是有道理的。感谢您的任何想法/意见。(试图将代码复制到一台机器上,在那里我可以上传一部分给那些想复习的人,但gmail阻止了它。正在处理它。(

导致问题的代码:

          $FileLocation2 = "LOG-LastTested_$($Userlist)"
          # Write out the last user tried
          $tm = get-date
          # This file is written to so rapidly, errors can occur, b/c it's still open, "In use by another process.  SilentlyContinue not working, using try-catch which surpresses error (but is 2x slower).
          Try {Write-output "Num: $cu, Name: $name, Pass: $Password, Time: $tm" | set-content -erroraction 'stop' $FileLocation2}
          Catch [System.IO.IOException] {continue}```

已解决:我遇到的延迟/问题不是由于添加try-catch或将错误重定向到null的延迟。这是使用非真实用户名来测试脚本的结果,而不是实际的/生产名称。AD查找时间明显不同——以前没想过。

我正在用一个伪用户列表测试错误抑制(尝试catch/redirect到null(。当我检查测试速率时,它已经从生产帐户的每秒10个用户下降到了虚拟帐户的每秒3个用户。在恢复所有错误抑制后,仍然以较慢的3/s速率。所以我重新加入了我的尝试捕获线,并尝试使用生产帐户,效果很好——每秒8-10个用户。

因此,这个问题是由于唯一的变化:使用假疫苗而不是生产。有一次,我回到所有的制作账户,带着错误的压力——像冠军一样工作。希望这能帮助其他人。

感谢@RetiredGeek和@Mr。斯文一直让我测试并寻找解决方案。

最新更新