Powershell脚本列出Outlook收件箱中的所有子文件夹

时间:2019-06-12 17:19:30

标签: powershell

新的Powershell用户在这里。我要从Outlook收件箱中获取所有文件夹,子文件夹和子文件夹等的列表

Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
Get-ChildItem -Directory $namespace
  

“ FileInfo”一词无法识别为cmdlet的名称,   功能,脚本文件或可操作程序。检查拼写   名称,或者如果包含路径,请确认路径正确,并   再试一次。

1 个答案:

答案 0 :(得分:1)

Outlook文件夹不是目录项,它们是Outlook配置文件中的对象。

所以,你不能这样做...

Get-ChildItem -Directory $namespace

...,因为这是Windows文件系统。

因此,您应该关注文件夹对象:

### Messing with Outlook folders

Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type] 
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")

$namespace.Folders

# Results
<#
$namespace.Folders


Application            : Microsoft.Office.Interop.Outlook.ApplicationClass
Class                  : 2
Session                : Microsoft.Office.Interop.Outlook.NameSpaceClass
Parent                 : Microsoft.Office.Interop.Outlook.NameSpaceClass
DefaultItemType        : 0
DefaultMessageClass    : IPM.Note
Description            : 
EntryID                : 0000000070244...
Folders                : System.__ComObject
Items                  : System.__ComObject
Name                   : ...
#>

$namespace.Folders.FullFolderPath

# Results
<#
\\user01@contoso.com
#>

$namespace.Folders.Folders.FullFolderPath
# Results
<#
\\user01@contoso.com\Deleted Items
\\user01@contoso.com\Inbox
\\user01@contoso.com\Outbox
\\user01@contoso.com\Sent Items
...
#>


($folder = $namespace.getDefaultFolder)

# Results
<#
OverloadDefinitions                                                                                                                                                                      
-------------------                                                                                                                                                                      
Microsoft.Office.Interop.Outlook.MAPIFolder GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders FolderType)                                                               
Microsoft.Office.Interop.Outlook.MAPIFolder _NameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders FolderType)
#>


$folder = $namespace.getDefaultFolder($olFolders::olFolderInBox)
$folder.items

# Results
<#
Yadds... 
Yadda...
Yadda...
#>