【发布时间】:2017-05-17 23:39:41
【问题描述】:
我试图简单地计算用户密码到期前的天数。我使用 TimeSpan 来执行此操作。我在实践中的代码如下:
(New-TimeSpan -Start (get-date -hour 0 -minute 0 -second 0) -End (Get-Date $_.PasswordLastSet -hour 0 -minute 0 -second 0).AddDays(90)).Days
因此,如果当前日期是上次设置密码后的 90 天,则密码到期前的天数将为 0。
很遗憾,此代码将连续多天返回相同的结果。出于某种原因,我似乎无法在这里获得完全一致的结果,我认为这取决于一天中的时间,但我不确定为什么。大多数时候,我们每隔一天跳过一次。因此,如果我们一周中的每一天都运行它,我们将返回 4,4,2,2,0,0。
要轻松复制,您可以使用以下内容:
$x = (get-date).AddDays(-90)
(New-TimeSpan -Start (get-date $x -hour 0 -minute 0 -second 0).AddDays(90) -End (get-date -hour 0 -minute 0 -second 0)).Days
(New-TimeSpan -Start (get-date $x -hour 0 -minute 0 -second 0).AddDays(89) -End (get-date -hour 0 -minute 0 -second 0)).Days
【问题讨论】:
-
对我来说,它返回
0和AddDays(90)和1和AddDays(89)。这是正确的,不是吗? -
只是为了确认它可以被复制。我在三个不同的系统上尝试了这段代码。在他们中的第一个上,我连续得到 0,1(如预期的那样)。但在另外两个系统上,我得到了 0,0。在重复测试中,数字是随机的 0,0 或 0,1。
标签: powershell