我正在尝试使用CSV文件删除Exchange联系人,但是,如果该列表超过25个用户,我希望此脚本停止甚至不启动。
$RemoveContacts = Import_CSV ".\Removed Contacts_$((Get-Date).ToString('MMddyyyy')).csv"
$RemoveContacts | ForEach { Remove-MailContact -identity $_ -confirm:$false}
实现此目标的最佳方法是什么?
答案 0 :(得分:1)
如果您甚至不想开始处理,如果数组$RemoveContacts
的用户超过25个:
if ($RemoveContacts.Count -gt 25) {
Write-Error "Too many contacts: $($RemoveContacts.Count)"
return
}
Write-Error
创建一个非终止错误,return
退出脚本/函数。
请注意,如果适用,默认情况下将继续处理。
要中止处理,请使用Throw
而不是Write-Error
。
如果您要最多处理25个元素:
Select-Object -First <n>
允许您在收到第一个<n>
个对象之后停止处理:
$RemoveContacts | Select-Object -First 25 | ForEach { Remove-MailContact -identity $_ -confirm:$false }
Select-Object -First
是在管道中使用的正确工具。
但是,由于您已经将所有对象都加载到内存中的数组中,因此可以更简单且更有效地使用数组切片:
$RemoveContacts[0..24] | ForEach { Remove-MailContact -identity $_ -confirm:$false }
[0..24]
从数组$RemoveContacts
中提取前25个元素,即使该数组包含的元素少于该元素,也可以安全使用。
在PSv4 +中,您可以使用.ForEach()
方法处理每个数组元素来进一步加快速度:
$RemoveContacts[0..24].ForEach({ Remove-MailContact -identity $_ -confirm:$false })