删除联系人的 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()}
我想进行一次迭代,自动从 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()}