# Get Password Expire Date
$EXPDTE = [datetime]::FromFileTime((Get-ADUser -Identity $USERNAME -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")
# Subtract Expire Date from Today
$DAYSTOEXP = (($EXPDTE)-(Get-Date)).Days
Write-Host "{0}" -f $EXPDTE
给我以下错误:
Write-Host : Cannot bind parameter 'ForegroundColor'. Cannot convert value "1/14/2018 10:39:12 AM" to type
"System.ConsoleColor". Error: "Invalid cast from 'System.DateTime' to 'System.ConsoleColor'."
At C:\Users\\Documents\PowerShell\ADPasswordExpire.ps1:14 char:21
+ Write-Host "{0}" -f $EXPDTE
+ ~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Write-Host], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WriteHostCommand
仅在使用Write-Host和-f
运算符时才会发生这种情况。
如果我这样做:
$ EXPDTE
Sunday, January 14, 2018 10:39:12 AM
$ EXPDTE.ToString()
1/14/2018 10:39:12 AM
使用-f
时,我在这里缺少什么?
答案 0 :(得分:2)
在您的情况下,-f
是-ForeGroundColor
的缩写。
删除Write-Host
,或使用子表达式:
"{0}" -f $EXPDTE
Write-Host $("{0}" -f $EXPDTE)
修改强>
使用[datetime]
对象,您应指定日期格式。看看这个ss64 page。例如。对ShortDatePattern使用d
或为LongDatePattern使用D
。如果您需要不同的输出字符串,请回复评论。
"Date to Expiry: {0:d}" -f $EXPDTE
"Days to Expire: {0}"-f $DAYSTOEXP