删除联系人的 Powershell 迭代

Powershell iteration to delete contacts

我想进行一次迭代,自动从 Outlook 中删除所有联系人。

第一行构成集合:

$olSession = (New-Object -ComObject Outlook.Application).Session
$olSession.Logon('Outlook')
$contactsFolder = 10
$elemek = $olSession.GetDefaultFolder($contactsFolder).Items 

我可以删除一项,如果我知道名称:

 $deleteone = $elemek | Where-Object {$_.FullName -eq "Your Name"}
 $deleteone.Delete()

但是我想自动删除所有联系人,所以我用$elemek.Count得到了$elemek中的元素个数。

不知道如何获取数组的值"dynamically":

for ($i=0; $i -le $elemek.Count; $i++)
{
    # The following line is not working
    $elemek.Count[0].Delete()
}

你能帮我修复迭代吗?

谢谢。

加法:

如果我运行这个:

 $elemek | Format-Table FullName,MobileTelephoneNumber,Email1Address

我知道了:

FullName      MobileTelephoneNumber       Email1Address
--------      ---------------------       -------------
Morgan Freeman                            /o=Mydomain/ou=Exchange Administrativ...                            
Johny English                             /o=Mydomain/ou=Exchange Administrativ...

所以我真的需要从 $elemek 获取 FullName 并在 for itaration 的脚本块中使用。

如果 $elemk 包含空值,可能会引发异常,试试这个: ...

$ErrorActionPreference="stop"
 $elemek = $olSession.GetDefaultFolder($contactsFolder).Items 
try{

    $elemk |%{ if ($_) { $_.delete() } }
}
catch{
"error occured :" 
$_
}

只用ForEach-Object,删除前预读$elemek的内容:

@($elemek)|ForEach-Object {$_.Delete()}