在foreach循环期间分批暂停?

时间:2015-03-26 01:51:00

标签: powershell

我正在编写脚本,将500多条DNS记录迁移到Windows 2008(来自' 03),然后通过DNSCMD(内置MS DNS工具)操纵属性。

无论如何 - DNS存在限制,如果你做的事情太快了#34;它开始窒息 - 我以前在旧的DOS脚本中看到过这个。

那就是说,我如何批处一个foreach循环?

例如(用外行人的话来说,脚本)

$records = C:\myfile.txt

foreach ($record in records) {
     MyFunction (only to the first 20 records)
     start-sleep 2
     MyFunction (to the next 20 records)
... etc .... 
    }

这可能吗?如果是这样你会如何接近它?我想我可以在start-sleep 1之后添加一个简单的MyFunction,但是有500多条记录,有很多功能,这需要花费很长时间。 :(我认为在DOS世界中找到的效率方面是最好的。感谢!

1 个答案:

答案 0 :(得分:4)

如果您正在从文件中读取它们,可以使用-ReadCount批量处理它们:

Get-Content C:\myfile.txt -ReadCount 20 |

foreach {
 foreach ($record in $_) 
   { MyFunction $record }
 start-sleep 2
 }