Search code examples
powershelldate

The months difference between dates using PowerShell


I need to have AD User Account Expiration Date and now how many months and date its remain until will be disabled.

I tried the code under but I am getting in the months 1 and I have less than one month I would like to have answer like 0 month and 27 days

$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 

(Here I got the number 1 but I have less than one month)


Solution

  • You can just do normal arithmetic on dates, but if there are no months, it will return $null not 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
    }