Назад | Перейти на главную страницу

ContentFilter недействителен. System.Datetime

Если я запустил следующее

$3MonthsBack = Get-Date (Get-Date).AddMonths(-3) -f MM/dd/yyyy
New-MailboxExportRequest -mailbox kundesenter@company.no -IncludeFolders akriv -ContentFilter{Received -lt "$3MonthsBack"} -FilePath "\\sto-cm-01\Test\$BatchName.pst" -name "$BatchName" -ExcludeDumpster

Я получаю это:

The provided ContentFilter value is invalid. ContentFilter is invalid. The value "$3MonthsBack" could not be converted to type System.DateTime. --> The value "$3MonthsBack" could not be converted to type System.DateTime.

Когда я проверяю системные часы, они сформированы 29.06.2016, и если я запустил $ 3MonthsBack, они выдадут 29.03.2016 (Тот же формат?)

Как это исправить?

После помощи @sergei я теперь узнал, как это решить.

С New-Mailboxexportrequest вы должны обернуть текст и использовать "вместо {

Это означает Эта статья необходимо обновить, чтобы заменить его:

-ContentFilter {Received -lt '$Variable'}

Кому:

-ContentFilter "Received -lt '$Variable'"

Искал решение этой проблемы, меня это сводило с ума!

Я взял кусочки из упомянутой статьи, Эта статья с mysysadmintips.com и Эта статья от случайного коммунального обслуживания.

Я провел дальнейшее исследование New-PSSession и New-PSSessionOption. Наконец он заработал, используя PSSession и splatting.

Нет необходимости изменять региональные настройки на вашем сервере Exchange.

$SessionOption = New-PSSessionOption -Culture 'en-US'
$PSSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://<ExchangeServer>/PowerShell/" -SessionOption $SessionOption

$DateRangeStart = ([datetime]::Today).Addmonths(-3) # 3 months from today
$DateRangeEnd = [datetime]::Now # Now :)

$ExportParam = @{
        Name = <RequestName>
        Mailbox = <Mailbox>
        ExcludeDumpster = $true
        FilePath = <ExportPath>
        ContentFilter = "((Received -le '"+$DateRangeEnd+"') -and (Received -ge '"+$DateRangeStart+"')) -or ((Sent -le '"+$DateRangeEnd +"') -and (Sent -ge '"+$DateRangeStart+"'))"
}

Invoke-Command -Session $PSSession -ScriptBlock {New-MailboxExportRequest @ExportParam}