Exchange命令行管理程序-Exchange 2010-使用DateRange导出到PST,忽略了过滤

时间:2019-03-27 19:42:04

标签: powershell exchange-server-2010 exchange-management-shell

我将详细说明标题。

我当前正在创建一个脚本,用于将Exchange 2010上的邮箱导出到PST,仅将特定日期范围内的电子邮件导出。

但是,似乎忽略了过滤器,而是将所有37gb导出到PST。

我正在创建脚本,以防止将来不得不这样做。我将在下面发布该脚本,因为由于变量等原因,所有脚本都与该问题相关。

# / Sets to US Date Values \ #

[System.Reflection.Assembly]::LoadWithPartialName("System.Threading")
[System.Reflection.Assembly]::LoadWithPartialName("System.Globalization")
[System.Threading.Thread]::CurrentThread.CurrentCulture = [System.Globalization.CultureInfo]::CreateSpecificCulture("en-us")

# / This Loads The Assemblies Required for Data Input for the future Parameters \ #

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null
[System.Windows.Forms.Application]::EnableVisualStyles() | Out-Null

# / This Loads The Pop-up Data Input Windows For Creating the Parameters \ #

Add-Type -AssemblyName Microsoft.VisualBasic

# / Parameter Creation Using Nice GUI Pop-Up Windows \ #

$User = [Microsoft.VisualBasic.Interaction]::InputBox('What Is The Email Account?', 'Email Address', "Email@Email.com")
$StartDateData = [Microsoft.VisualBasic.Interaction]::InputBox('What Is The Start Date (US Date Format)', 'Start Date', "12/25/1900")
$EndDateData = [Microsoft.VisualBasic.Interaction]::InputBox('What Is The End Date (US Date Format)', 'End Date', "12/25/1900")
$Path = [Microsoft.VisualBasic.Interaction]::InputBox('Specify Where You Want The PST to Be Saved (Full UNC Path WITH Trailing Slash)', 'Path', "C:\Users\%USERPROFILE%\Desktop\")

# / Export Mailbox \ #
cls
Write-Host ''
Write-Host ''
Write-Host ''
Write-Host ''
Write-Host ''
Write-Host ''
Write-Host 'Is this Data Correct?'
Write-Host ''
Write-Host ''
Write-Host $User 
Write-host $StartDateData
Write-host $EndDateData
write-host $Path
Write-Host ''
Write-Host ''
Write-Host ''
Write-Host "Do You Want To Continue? (Y/N)"
$response = Read-Host
if ( $response -ne "Y" ) { 
exit
}

cls

# / Sets The Path Parameter \ #
$PSTPath = $Path + $User + ".pst"

# / Sets The Date Parameter \ #

$StartDate = "'" + $StartDateData + "'"
$EndDate = "'" + $EndDateData + "'"

# Use This if the Below Doesn't Work - Export-Mailbox -Identity $User -StartDate $StartDate -EndDate $EndDate -PstFolderPath $PSTPath

# gt = Greater-Than
# ge = Greater-Than-Or-Equal-To
# lt = Less-Than
# le = Less-Than-Or-Equal-To

$Request = New-MailboxExportRequest -Mailbox $User -ContentFilter {(Received -ge $StartDate) -and (Received -le $EndDate)} -FilePath $PSTPath

$Status = ( Get-MailboxExportRequestStatistics -Identity $Request ).Status.ToString().Trim()

while( $Status -ne 'Completed' ){
    Start-Sleep 10

    $Status = ( Get-MailboxExportRequestStatistics -Identity $Request ).Status.ToString().Trim()

    Write-Verbose "Current Export Status: $Status" -Verbose
    }a

Write-Verbose "$Mailbox exported" -Verbose

很抱歉,我个人看不到错误。

1 个答案:

答案 0 :(得分:0)

经过大量的玩耍,最终自己解决了这个问题。

必须将过滤器放入自己的参数中,

$filter = "(Received -ge" + " " + $StartDate + ") -and (Received -le" + " " + $EndDate + ")"

然后将其通过管道传递给命令

$Request = New-MailboxExportRequest -ContentFilter $filter -Mailbox $User -Name $ReqName -FilePath $PSTPath

这使它得以前进