web-dev-qa-db-ja.com

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.

システムクロックを確認すると、2016年6月29日の形式であり、$ 3MonthsBackを実行すると、2016年3月29日(同じ形式ですか?)

これを修正するにはどうすればよいですか?

2
Jakodns

私はこの問題の解決策を探していました、それは私を怒らせました!

私は言及された記事から少しずつ取りました この記事 mysysadmintips.comからそして この記事 時折ユーティリティから。

New-PSSessionとNew-PSSessionOptionについてさらに調査しました。最後に、PSSessionとスプラッティングを使用して動作させました。

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}
1
Martijn

@sergeiの助けを借りて、私はそれを解決する方法を見つけました。

New-Mailboxexportrequestでは、テキストを折り返し、{の代わりに "を使用する必要があります

つまり、 この記事 を次の場所から変更するには更新する必要があります。

-ContentFilter {Received -lt '$Variable'}

に:

-ContentFilter "Received -lt '$Variable'"
1
Jakodns