#powershell #exchange-server-2010 #exchange-management-shell
#powershell #exchange-server-2010 #exchange-management-shell
Вопрос:
Я немного остановлюсь на названии.
В настоящее время я создаю скрипт для экспорта почтового ящика на Exchange 2010 в PST, только электронные письма из определенного диапазона дат.
Однако, похоже, что фильтр игнорируется и все 37 ГБ экспортируются в 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. Я не знаю, какого типа или формата
New-MailboxExportRequest
илиGet-MailboxExportRequestStatistics
ожидаю$StartDate/$EndDate
быть. На самом деле это просто строки без какой-либо проверки.2. @LotPings не понимаю, что ты имеешь в виду, приятель, уточни?
Ответ №1:
В итоге я исправил это сам после ДОЛГИХ попыток.
Пришлось добавить фильтр в свой собственный параметр, вот так
$filter = "(Received -ge" " " $StartDate ") -and (Received -le" " " $EndDate ")"
затем передайте это в команду
$Request = New-MailboxExportRequest -ContentFilter $filter -Mailbox $User -Name $ReqName -FilePath $PSTPath
Это позволило ему прогрессировать