ContentFilter 无效。System.Datetime

ContentFilter 无效。System.Datetime

如果我运行以下命令

$3MonthsBack = Get-Date (Get-Date).AddMonths(-3) -f MM/dd/yyyy
New-MailboxExportRequest -mailbox [email protected] -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.

当我检查系统时钟时,它被格式化为 6/29/2016,如果我运行 $3MonthsBack,它会吐出 03/29/2016 (相同格式?)

我该如何解决?

答案1

我正在寻找解决这个问题的方法,它快让我发疯了!

我从上述文章中摘录了一些内容,本文来自 mysysadmintips.com 和本文来自 Occasional Utility。

我对 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}

答案2

在@sergei 的帮助之后,我现在找到了解决方法。

使用 New-Mailboxexportrequest 时,您必须换行文本并使用“而不是 {

这意味着本文需要进行更新以将其更改为:

-ContentFilter {Received -lt '$Variable'}

到:

-ContentFilter "Received -lt '$Variable'"

相关内容