使用PowerShell的日期之间的月份差异

时间:2019-08-29 11:43:00

标签: powershell date

我需要具有“ AD用户帐户到期日期”以及现在的剩余月份和日期,直到被禁用。

我尝试使用下面的代码,但是我在第1个月就开始学习了,而我还不到一个月,我希望得到像0个月零27天这样的答案

$StartDate (DateNow)
2019-08-29 00:00:00

AccountExpirationDate                                                                                                                                                                         
---------------------                                                                                                                                                                         
2019-09-26 00:00:00    

$ExpirDate = Get-ADUser test111 -Properties AccountExpirationDate | select AccountExpirationDate

AccountExpirationDate                                                                                                                                                                         
---------------------                                                                                                                                                                         
2019-09-26 00:00:00    

$EndDate= $ExpirDate.AccountExpirationDate

2019-09-26 00:00:00 


$StartDate = (GET-DATE)

2019-08-29 00:00:00


NEW-TIMESPAN –Start $StartDate –End $EndDate

Days              : 27
Hours             : 10
Minutes           : 29
Seconds           : 56


$monthdiff = $EndDate.month - $StartDate.month + (($EndDate.Year - $StartDate.year) * 12)

1 

(这里我得到的数字是1,但是我不到一个月)

2 个答案:

答案 0 :(得分:0)

您可以对日期进行常规算术,但如果没有月份,它将返回$ null而不是0。

$today - date
$ExpirDate = Get-ADUser test111 -Properties AccountExpirationDate | select AccountExpirationDate

$diffday = $today - $expirDate

$diffday.days
$diffday.months

if ($diffday.months -eq $null)
{
$Diffday.months =0
}

答案 1 :(得分:0)

我相信这是您想要的,或者可以进行调整以相对容易地实现它。

$today = Get-Date;
$endOfYearDate = "12/31/$($today.Year)";
$endOfYear = Get-Date($endOfYearDate);
$monthsLeftInTheYear = ($endOfYear.Month - $today.Month);
$daysLeftInTheYear = ($endOfYear - $today);
$daysLefInTheYear.Days;