如何暂停 foreach PowerShell 循环
How to pause a foreach PowerShell loop
我在下面创建了这个简单的脚本来遍历包含用户列表的文件并为文件中的每个用户应用配额规则。
它有效,但在处理过程中有时会失败,因为我相信文本文件中的大量用户有时会阻止访问。有没有办法让循环在 foreach 循环的每次迭代后或 foreach 循环的五次迭代后暂停 5 - 10 秒,直到文件管理器完全更新了这些配额,然后转到文件中的下一个用户?
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
使用计数器和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"
}
我在下面创建了这个简单的脚本来遍历包含用户列表的文件并为文件中的每个用户应用配额规则。
它有效,但在处理过程中有时会失败,因为我相信文本文件中的大量用户有时会阻止访问。有没有办法让循环在 foreach 循环的每次迭代后或 foreach 循环的五次迭代后暂停 5 - 10 秒,直到文件管理器完全更新了这些配额,然后转到文件中的下一个用户?
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
使用计数器和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"
}