问题描述
如果我将直接Powershell与交换模块一起使用,则所有功能均按预期工作:
echo $mbxs | Search-MailBox -SearchQuery 'received:01/07/2020..01/08/2020 AND from:test@some.com' -DeleteContent -Force
但是如果我使用ps1脚本,则会出现KQL异常:
$date01=(get-date).AddDays(-14).ToString("dd\/MM\/yyyy")
$date02=(get-date).AddDays(-28).ToString("dd\/MM\/yyyy")
$mails = "test@some.com","test1@some.com"
$mbxs = import-csv C:\script\names.csv
foreach ($mail in $mails)
{
echo $mbxs | Search-MailBox -SearchQuery 'received:$date02..$date01 AND from:$mail' -DeleteContent -Force
echo $mbxs | Search-MailBox -SearchQuery 'sent:$date02..$date01 AND to:$mail' -DeleteContent -Force
}
Remove-Variable mbxs,mails,date01,date02
The KQL parser threw an exception.
同一脚本可在2003服务器上的ps 1.0上运行,但不能在2012 R2上运行...我该怎么办?
解决方法
我看到几个问题:
- 您需要使用双引号来扩展字符串中的变量:
- 如果要从CSV导入,则必须引用该属性。
- 您不需要在管道中回显$ mbxs。您应该能够声明它。
它看起来应该像这样:
$date01=(get-date).AddDays(-14).ToString("dd\/MM\/yyyy")
$date02=(get-date).AddDays(-28).ToString("dd\/MM\/yyyy")
$mails = "test@some.com","test1@some.com"
$mbxs = import-csv C:\script\names.csv
foreach ($mail in $mails)
{
$mbxs | Search-Mailbox -SearchQuery "Received:$date02..$date01 AND From:$mail" -DeleteContent -Force
$mbxs | Search-Mailbox -SearchQuery "Sent:$date02..$date01 AND To:$mail" -DeleteContent -Force
}
Remove-Variable mbxs,mails,date01,date02
但是,我也有点担心,因为如果要从CSV导入,则通常必须引用属性。如果您要发布CSV数据的代表性示例,我们可以对此进行更正。