Powershell 将字符串转换为System.DateTime为Office365的特定格式

Powershell 将字符串转换为System.DateTime为Office365的特定格式,powershell,office365,Powershell,Office365,在以特定格式返回时,我遇到了将用户输入转换为DateTime类型的问题。我已经搜索了几个小时了,到目前为止我尝试的一切都没有成功 当我输入日期时,我希望它保持我输入的格式,以便Get MessageTrace可以读取它 我要找的是输入“2019年1月23日”,然后ParseExact会将其打回“2019年1月23日” 我得到的是$NewDate1是“2019年1月23日星期三上午12:01:00” 我可能做得不对,或者做错了什么,但我需要一些帮助 $UserEmail = Read-Host -

在以特定格式返回时,我遇到了将用户输入转换为
DateTime
类型的问题。我已经搜索了几个小时了,到目前为止我尝试的一切都没有成功

当我输入日期时,我希望它保持我输入的格式,以便
Get MessageTrace
可以读取它

我要找的是输入“2019年1月23日”,然后
ParseExact
会将其打回“2019年1月23日”

我得到的是
$NewDate1
是“2019年1月23日星期三上午12:01:00” 我可能做得不对,或者做错了什么,但我需要一些帮助

$UserEmail = Read-Host -Prompt 'Enter your WT email address'
$Date1 = Read-Host -Prompt 'Enter the first date (MM/DD/YYYY)'
$Date2 = (Read-Host -Prompt 'Enter the second date (MM/DD/YYYY)'


$NewDate1 = [datetime]::parseexact($Date1, 'm/d/yyyy', $null)
$NewDate2 = [datetime]::parseexact($Date2, 'm/d/yyyy', $null) 


Get-MessageTrace -RecipientAddress 'UserEmail' -StartDate '$NewDate1'
-EndDate 'NewDate2'
我收到的错误信息:

无法处理参数“StartDate”上的参数转换。无法将值“$NewDate1”转换为类型 “系统日期时间”。错误:“字符串未被识别为有效的日期时间。” +CategoryInfo:InvalidData:(:)[Get MessageTrace],ParameterBindin…mationException +FullyQualifiedErrorId:ParameterArgumentTransformationError,Get-MessageTrace +PSComputerName:outlook.office365.com


首先,关于日期字符串格式,小写字母“m”表示分钟,大写字母“m”表示月份。这就是为什么“2019年1月23日”被解释为2019年1月23日星期三12:00:00(强调一天中的第一分钟)。您可能想要的模式是“M/d/yyyy”

其次,我不完全确定您是否理解日期解析
ParseExact
不接受字符串并将其作为具有特定字符串表示形式的日期“回击”
ParseExact
将格式化为日期的字符串转换为
DateTime
对象。“<代码>日期时间< /Cord>对象没有固有的格式或字符串表示(除非您考虑<代码> toString())/代码>是规范的日期格式),它只是一个日期。如果以后需要该日期的字符串表示形式,则必须将其转换为字符串

第三,您正在将一个值为“$NewDate1”的字符串传递给
-StartDate
,因此异常声明:

无法将值“$NewDate1”转换为类型“System.DateTime”


删除“$NewDate1”周围的单引号,以传递变量的值,而不是变量的名称。

我甚至没有意识到第三部分,谢谢您的帮助。