2014-01-08 28 views
0

从使用Powershell ISE 4.0的Outlook电子邮件中获取日期范围时遇到问题。任何人都可以告诉我这个脚本有什么问题吗?我可以让脚本部分工作,但日期排序对我来说根本不起作用。从使用Powershell的Outlook电子邮件中获取日期范围的问题

<# Outlook Data Mining Script 

You will need to install Powershell 4.0, otherwise known as Windows Management package 
    so that you can get the program called 'Powershell ISE' 

    Finally, to run this, first, enable execution policy by running these commands: 
    > Get-ExecutionPolicy 
    > Set-ExecutionPolicy -Scope CurrentUser Unrestricted -Force 

#> 

cls 
Write-Host "Wait while we compile the inbox items..." 

<# $oldestdate = (Get-Date).AddDays(-7) #> 

Get-OutlookInbox | where { ($_.ReceivedTime -gt [datetime]"12/28/13") } 

<# Filter examples: 
    where { $_.Subject.StartsWith("RE:") } | 
    where { $_.ReceivedTime -gt [datetime]::Parse("12/20/2013") } 
    sort ReceivedTime -Descending 
    select subject, ReceivedTime -last 5 
    #> 


<# functions defined below here #> 

Get-OutlookInBox function 
Function Get-OutlookInBox 
{ 

    <# .Synopsis 
    This function returns InBox items from default Outlook profile 
    .Description 
    This function returns InBox items from default Outlook profile. It 
    uses the Outlook interop assembly to use the olFolderInBox enumeration. 
    It creates a custom object consisting of Subject, ReceivedTime, Importance, 
    SenderName for each InBox item. 

    *** Important *** depending on the size of your InBox items this function 
    may take several minutes to gather your InBox items. If you anticipate 
    doing multiple analysis of the data, you should consider storing the 
    results into a variable, and using that. 

    .Example 
    Get-OutlookInbox | 
    where { $_.ReceivedTime -gt [datetime]"5/5/11" -AND $_.ReceivedTime -lt ` 
    [datetime]"5/10/11" } | sort importance 
    Displays Subject, ReceivedTime, Importance, SenderName for all InBox items that 
    are in InBox between 5/5/11 and 5/10/11 and sorts by importance of the email. 

    .Example 
    Get-OutlookInbox | Group-Object -Property SenderName | sort-Object Count 
    Displays Count, SenderName and grouping information for all InBox items. The most 
    frequently used contacts appear at bottom of list. 

    .Example 
    $InBox = Get-OutlookInbox 
    Stores Outlook InBox items into the $InBox variable for further 
    "offline" processing. 

    .Example 
    ($InBox | Measure-Object).count 
    Displays the number of messages in InBox Items 

    .Example 
    $InBox | where { $_.subject -match '2011 Scripting Games' } | 
    sort ReceivedTime -Descending | select subject, ReceivedTime -last 5 
    Uses $InBox variable (previously created) and searches subject field 
    for the string '2011 Scripting Games' it then sorts by the date InBox. 
    This sort is descending which puts the oldest messages at bottom of list. 
    The Select-Object cmdlet is then used to choose only the subject and ReceivedTime 
    properties and then only the last five messages are displayed. These last 
    five messages are the five oldest messages that meet the string. 

#> 

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") 

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

$folder.items | 

Select-Object -Property Subject, ReceivedTime, Importance, SenderName 

} #end function Get-OutlookInbox 

回答

0

这个脚本在我的电脑运行正常工作:

  • 的Windows Server 2012标准
  • PowerShell的3.0
  • 展望2010

我修改了一点,只是剪出一些东西,但整体脚本是一样的:

function Get-OutlookInBox { 
    Write-Host "Wait while we compile the inbox items..." 

    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") 
    $folder = $namespace.getDefaultFolder($olFolders::olFolderInBox) 
    $folder.items | Select-Object -Property Subject, ReceivedTime, Importance, SenderName 
} 
+0

我的问题是关于日期过滤。它看起来像是有效的,但如果你仔细观察,它只会返回日期范围外的所有内容。 – djangofan

+1

对我来说,它返回的东西大于指定的日期范围,没有任何东西在它之前。 –

+0

我在上面的脚本中调用了两次Get-OutlookInbox。我的错。感谢您为我进行健康检查。我以为我疯了。 – djangofan

相关问题