DateTime 变量未正确解析,字符串有效

DateTime variable not parsing correctly, string works

我正在尝试将一个变量传递给 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 以及字符串,每种可以想象的格式 - 我已经确保在解析变量时,它绝对会变成正确的字符串,但没有任何效果。

有什么想法吗?

Filter parameter 是字符串而不是脚本块。在那些其他情况下,它使用脚本块,因为脚本块的字符串形式是没有周围大括号的块文本。但是,在这种情况下,您需要在过滤器中替换变量。试试这个:

Get-SCSMClassInstance -Filter "ClosedDate -eq ""$Today"""