Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 将日期列表与最大日期进行比较_Powershell_Powershell 2.0_Powershell 3.0_Powershell 4.0 - Fatal编程技术网

Powershell 将日期列表与最大日期进行比较

Powershell 将日期列表与最大日期进行比较,powershell,powershell-2.0,powershell-3.0,powershell-4.0,Powershell,Powershell 2.0,Powershell 3.0,Powershell 4.0,我有一个最大日期的输出$a和$b,如下所示:我想比较包含日期的$a和$b,并得到结果。$a和$b将每天更改。我们的目标是每天在最长日期后获得一切。“最大日期”每天都会更改,因为新数据加载的日期和$a每天都会更改为 这就是$a的派生方式: $access_token ="Access_Token" $URI = "https://XXXXX" $headers = @{“authorization” = “Bearer $access_token”} [Net.ServicePointMan

我有一个最大日期的输出$a和$b,如下所示:我想比较包含日期的$a和$b,并得到结果。$a和$b将每天更改。我们的目标是每天在最长日期后获得一切。“最大日期”每天都会更改,因为新数据加载的日期和$a每天都会更改为

这就是$a的派生方式:

$access_token ="Access_Token"

$URI =  "https://XXXXX"
$headers = @{“authorization” = “Bearer $access_token”} 
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$result = Invoke-RestMethod -Uri $URI -Headers $headers -ContentType $ContentType |ConvertTo-Json
$a = $Result|ConvertFrom-Json| Select -ExpandProperty Forms

正如马蒂亚斯所说,我们需要更多的细节。但要想让你先走一步,以下几点是可行的:

$A = @(
    [PSCustomObject]@{
        id   = 'Person 1'
        date = [DateTime]'01/02/2017 10:59:15'
    }
    [PSCustomObject]@{
        id   = 'Person 2'
        date = [DateTime]'02/03/2017 13:10:19'
    }
    [PSCustomObject]@{
        id   = 'Person 3'
        date = [DateTime]'04/05/2017 11:11:12'
    }
    [PSCustomObject]@{
        id   = 'Person 4'
        date = [DateTime]'10/10/2017 10:42:19'
    }
    [PSCustomObject]@{
        id   = 'Person 5'
        date = [DateTime]'10/10/2017 13:34:58'
    }
)

$B = @{
    MAX_Date = [DateTime]'02/03/2017 13:10:19 '
}

$A | Where-Object { $_.date -gt $B.MAX_Date } | Sort-Object id

根据OP中提供的信息,这是我的最佳猜测。

什么是
$a
$b
?它们是弦吗?字符串数组?请向我们展示您是如何在第一阶段创建它们的place@MathiasR.Jessen. 它们是字符串数组,$a和$b将每天更改。我有一种方法可以做到这一点,而不用硬编码日期。正如马蒂亚斯所说,我们需要更多的细节。数据来自哪里?格式是什么?目标是什么?。。。。在不知道所有细节的情况下回答一个问题是很困难的。我已经补充了我是如何得到答案的$a@Djbril你所需要的只是最后一行。这怎么不是答案?@js2010我不想要最后一行,请看想要的结果。我要的是b美元之后的所有东西,即2017年3月2日13:10:19。如果我需要最后一行,我会使用selectobject-last1。这只会选择person5。我需要它来接3号、4号和5号人。@Djbril告诉我这个问题是否还在发生。如果是这样,我猜您的$a不是一个真正的数组。
$b= 

MAX_Date
02/03/2017 13:10:19 
Desired results:

id          date
--------    -----------
Person 3    04/05/2017 11:11:12
Person 4    10/10/2017 10:42:19
Person 5    10/10/2017 13:34:58
$A = @(
    [PSCustomObject]@{
        id   = 'Person 1'
        date = [DateTime]'01/02/2017 10:59:15'
    }
    [PSCustomObject]@{
        id   = 'Person 2'
        date = [DateTime]'02/03/2017 13:10:19'
    }
    [PSCustomObject]@{
        id   = 'Person 3'
        date = [DateTime]'04/05/2017 11:11:12'
    }
    [PSCustomObject]@{
        id   = 'Person 4'
        date = [DateTime]'10/10/2017 10:42:19'
    }
    [PSCustomObject]@{
        id   = 'Person 5'
        date = [DateTime]'10/10/2017 13:34:58'
    }
)

$B = @{
    MAX_Date = [DateTime]'02/03/2017 13:10:19 '
}

$A | Where-Object { $_.date -gt $B.MAX_Date } | Sort-Object id
#First we need to cast this string into a date so it will compare properly.
$Max_Date = Get-Date $b.MAX_Date
#Then we need an array to store the objects that we want to keep
$Dates_to_Keep = ()
#Now we can iterate through the array and check the date on each object.
Foreach ($person in $a){
    #Again, casting this string as a date for accurate comparison. 
    $date = Get-Date $person.date
    If ($date -ge $Max_Date){
         $Dates_to_Keep = $Dates_to_Keep + $person
    }
}
Write-Host $Dates_to_Keep