私が以下を実行した場合
$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日(同じ形式ですか?)
これを修正するにはどうすればよいですか?
私はこの問題の解決策を探していました、それは私を怒らせました!
私は言及された記事から少しずつ取りました この記事 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}
@sergeiの助けを借りて、私はそれを解決する方法を見つけました。
New-Mailboxexportrequestでは、テキストを折り返し、{の代わりに "を使用する必要があります
つまり、 この記事 を次の場所から変更するには更新する必要があります。
-ContentFilter {Received -lt '$Variable'}
に:
-ContentFilter "Received -lt '$Variable'"