将日期时间作为变量而不是在哪里对象过滤器传递

时间:2019-06-21 16:00:30

标签: powershell datetime variables

我正在尝试将以下日期范围的代码用作Where-Object过滤器,但这减慢了我的输出速度,并且无法导出到csv。

runBlocking {}

如何将Where-Object更改为类似于-closedate $ variable的参数,就像我对-PID所做的那样?对我来说,最大的困难是创建一个日期时间变量。

1 个答案:

答案 0 :(得分:-1)

首先,您应该将$filterDate移出循环,其次,绝对不要在循环中使用Format-Table,绝对不要在循环中使用。

尝试一下:

$filterDate = [datetime]::Today.AddDays(-22)
$Prids = get-content -Path C:\Temp\sqltest.txt
$Result = foreach ($prid in $prids){
    Get-CdPac2000Problems  -PId $Prid  | Where-Object {(Get-Date $_.ClosedDate.Date) -ge $filterDate}
}
$Result | Format-Table PID,ClosedDate,ClosedByELID,ResponsibleGroup,ReferredDate -autosize

PowerShell中最美丽的功能之一是,您可以直接干扰所有对象。将对象传递给变量或管道中的下一个命令时,将保留所有方法和属性。格式表将对象转换为表,这是人类可读的东西,是脱离方法和生活的东西。