2015-06-06 5 views
0

Я пытаюсь передать переменную в команду Powershell следующим образом:переменная DateTime не корректно, разбор строки работает

$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, а также ул во всех мыслимых форматах - я убедился, что когда переменная будет проанализирована, она абсолютно превратится в правильную строку, но ничего не получится.

Любые идеи?

ответ

2

Filter parameter - это строка, которая не является скриптблоком. Он работает со скриптблоком в тех других случаях, потому что строковая форма блока сценария представляет собой текст блока без окружающих фигурных скобок. Однако в этом случае вам нужна переменная, подлежащая замене в фильтре. Попробуйте следующее:

+0

Так просто! Спасибо! Я должен был заключить все выражение в скобках - Get-SCSMClassInstance -Filter («ClosedDate -eq $ Today»), и это сделало трюк. –

Смежные вопросы