为什么这个 powershell for 循环在 4 次迭代后停止
why this powershell for loop stops after 4 iteration
我知道我必须删除 8 个列表(自定义列表和库)。下面只删除 4,然后我必须再次执行,它删除 2,然后删除 1,然后删除 1。知道为什么吗?
$site = "http://inside.comp.com/sales"
$featureID = "b432665a-07a6-4cc7-a687-3e1e03e92b9f"
$str = "ArcGIS"
Disable-SPFeature $featureID -Url $site -Confirm:$False
start-sleep -seconds 5
$site = get-spsite $site
foreach($SPweb in $site.AllWebs)
{
for($i = 0; $i -lt $SPweb.Lists.Count; $i++)
{
$spList = $SPweb.Lists[$i]
if($SPList.Title.Contains($str))
{
write-host "Deleting " $SPList.Title -foregroundcolor "magenta"
$spList.Delete()
#$SPweb.Update()
}
}
$SPweb.Update()
}
因为当你删除一个列表中的第0项时,列表中的第1项就变成了0,在这个运行上被跳过了。然后同样的事情又重复了 3 次,其中只删除了 3 项。
为了从后面修复这个迭代项目:
for($i = $SPweb.Lists.Count - 1; $i -ge 0; $i--)
{
# The rest of the cycle
}
我知道我必须删除 8 个列表(自定义列表和库)。下面只删除 4,然后我必须再次执行,它删除 2,然后删除 1,然后删除 1。知道为什么吗?
$site = "http://inside.comp.com/sales"
$featureID = "b432665a-07a6-4cc7-a687-3e1e03e92b9f"
$str = "ArcGIS"
Disable-SPFeature $featureID -Url $site -Confirm:$False
start-sleep -seconds 5
$site = get-spsite $site
foreach($SPweb in $site.AllWebs)
{
for($i = 0; $i -lt $SPweb.Lists.Count; $i++)
{
$spList = $SPweb.Lists[$i]
if($SPList.Title.Contains($str))
{
write-host "Deleting " $SPList.Title -foregroundcolor "magenta"
$spList.Delete()
#$SPweb.Update()
}
}
$SPweb.Update()
}
因为当你删除一个列表中的第0项时,列表中的第1项就变成了0,在这个运行上被跳过了。然后同样的事情又重复了 3 次,其中只删除了 3 项。
为了从后面修复这个迭代项目:
for($i = $SPweb.Lists.Count - 1; $i -ge 0; $i--)
{
# The rest of the cycle
}