2015-11-26 70 views
2

我已经在下面创建了这个简单的脚本来遍历包含用户列表的文件,并为文件中的每个用户应用配额规则。它可以工作,但是在处理期间它有时会失败,因为我相信文本文件中的大量用户有时会阻止访问。有没有一种方法可以让循环在foreach循环的每次迭代后或5次foreach循环后暂停5到10秒,直到文件管理器完全更新这些配额,然后移动到文件中的下一个用户?如何暂停foreach powershell循环

ForEach ($adname in Get-Content "C:\Users\mick\Desktop\scripts\staff.txt") 

{ 

Invoke-NcSsh -Command "volume quota policy rule create -vserver FS-ONE -policy-name default -volume data -type user -target $adname -qtree """" -user-mapping off -disk-limit 3GB -soft-disk-limit 2GB -threshold 3GB" 
} 




Start-NcQuotaResize -vserver FS-ONE -volume data 

回答

3

使用计数器和Start-Sleep

$UserCount = 0 
foreach($adname in Get-Content "C:\Users\mick\Desktop\scripts\staff.txt") 
{ 
    # Sleep 3 seconds every 5 runs 
    if(++$UserCount % 5 -eq 0) 
    { 
     Start-Sleep -Seconds 3 
    } 

    Invoke-NcSsh -Command "volume quota policy rule create -vserver FS-ONE -policy-name default -volume data -type user -target $adname -qtree """" -user-mapping off -disk-limit 3GB -soft-disk-limit 2GB -threshold 3GB" 
} 
+0

干杯马蒂亚斯,完美的作品对我来说 – frodo

+0

你介意解释: “如果(++ $%USERCOUNT 5 -eq 0)” - 我明白了什么它的做法,但我不明白的语法“%5 -eq 0” – frodo

+0

@fodo它意味着采取后增加'UserCount'值,模5(即采取除5的剩余部分;由百分号运算符表示),并检查余数是否等于0. – minghan