DateTime 变量未正确解析,字符串有效
Posted
技术标签:
【中文标题】DateTime 变量未正确解析,字符串有效【英文标题】:DateTime variable not parsing correctly, string works 【发布时间】:2015-06-06 17:19:08 【问题描述】:我正在尝试将变量传递给 powershell 命令,如下所示:
$Today = Get-Date
Get-SCSMClassInstance -Filter ClosedDate -eq $Today
但我收到此错误:
Get-SCSMClassInstance : ClosedDate_C529833E_0926_F082_C185_294CBC8BB9FD='$Today'
-- String was not recognized as a valid DateTime.
At line:1 char:1
+ Get-SCSMClassInstance -ComputerName $computer $IncidentClass -Filter
ClosedDate ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Syste...InstanceComman
d:GetSCClassInstanceCommand) [Get-SCClassInstance], UnknownDatabaseException
+ FullyQualifiedErrorId : ExecutionError,Microsoft.SystemCenter.Core.Commands
.GetSCClassInstanceCommand
如果我直接传递字符串,不管格式如何,它都可以正常工作:
Get-SCSMClassInstance -Filter ClosedDate -eq "Friday, June 5, 2015 11:42:33 AM"
Get-SCSMClassInstance -Filter ClosedDate -gt "2015-6-5 11:42:33Z"
我已经尝试将变量设置为 DateTime 以及字符串,每种可以想象的格式 - 我已经确保,当解析变量时,它绝对会变成正确的字符串,但没有任何效果。
有什么想法吗?
【问题讨论】:
【参考方案1】:Filter parameter 是字符串而不是脚本块。在其他情况下,它与脚本块一起工作,因为脚本块的字符串形式是块的文本,没有周围的大括号。但是,在这种情况下,您需要在过滤器中替换变量。试试这个:
Get-SCSMClassInstance -Filter "ClosedDate -eq ""$Today"""
【讨论】:
如此简单!非常感谢!我不得不将整个表达式括在括号中 - Get-SCSMClassInstance -Filter ("ClosedDate -eq $Today"),它成功了。以上是关于DateTime 变量未正确解析,字符串有效的主要内容,如果未能解决你的问题,请参考以下文章
SQLite 和 .net 字符串未被识别为有效的 DateTime
DatePicker 绑定到 DateTime。 “字符串未被识别为有效的日期时间”
尝试使用linq过滤数据时,字符串未被识别为有效的DateTime
该字符串未被识别为有效的 DateTime 或 Adding a value to a 'datetime' column caused an overflow.