我有以下非常简单的 PowerShell 片段,但它不起作用。
以下作品
Get-MessageTrace -StartDate $dateStart -EndDate $dateEnd -PageSize 5000 `
-SenderAddress [email protected] `
| where {$_.RecipientAddress -like "*example.com*"} `
| Select-Object SenderAddress, RecipientAddress, Subject
虽然以下不起作用
$dateStart = "03/20/2017"
$dateEnd = "03/27/2017"
Get-MessageTrace -StartDate $dateStart -EndDate $dateEnd -PageSize 5000 `
-SenderAddress [email protected] `
| where {$_.RecipientAddress -like "*example.com*"} `
| Select-Object SenderAddress, RecipientAddress, Subject
即使我将$dateStart
and替换为$dateEnd
各种格式,例如MM/dd/yyyy hh:mm:ss.
没有错误,只是没有返回结果,但是我使用where
了我知道应该返回一些东西的模式。我还使用今天的日期(这是默认时间-startdate
和-enddate
未指定的时间)运行了上述(不起作用的示例),但这也不起作用。即使这是工作示例有效使用的内容。
所以我把它缩小到日期,但我看不到问题所在。如果我输入一个错误的日期字符串,至少给出错误,否则什么都没有。任何指针?
在您的脚本中,您当前正在使用
因为在这种情况下,值是字符串,Windows PowerShell 将自动使用
String
数据类型来存储值,而仅使用类型变量。Get-MessageTrace
-StartDate
-EndDate
System.DateTime
您可以使用以下方法设置正确的类型变量
Get-Date
:或者,您可以
System.DateTime
通过首先指定变量的类型来创建新对象,然后为其分配一个字符串值(如果它是一个可以转换为的值System.DateTime
):但是,我更喜欢
Get-Date
它,因为它使您的脚本更具通用性。例如,您可以创建一个始终为您提供过去 7 天信息的脚本:附加提示:
您还可以
Get-Date
用于计算区域选项中定义的短日期格式:它将为您提供和参数所需的正确短日期模式。
EndDate
StartDate