帐户的到期日期或帐户对所有AD用户都永不过期

阿贝拉克

当我运行以下命令时,获取的内容expiration_date为空。

是否有可能获得“永不过期”而不是空白expiration_date

Import-Module ActiveDirectory
$Groups = Get-ADGroup -filter {Name -like "SSL_VPN_Users" } | Select-Object Name
ForEach ($Group in $Groups) {
  Get-ADGroupMember -identity $($group.name) -recursive | 
    Get-ADUser -Properties samaccountname,mail,AccountExpires | 
    select samaccountname,mail,@{l="expiration_date";e={[datetime]::fromfiletime($_.accountexpires)}} | 
    Export-csv -path C:\SSLVPN\SSL_VPN_Users.csv -NoTypeInformation
}
DAXaholic

问题可能出在帐户永不过期时,其值为AccountExpires最大值。int64值,在ArgumentOutOfRangeException调用时会导致[datetime]::FromFileTime

因此,请尝试以下操作-我引入了辅助函数accountExpiresToString以提高表达式脚本块的可读性,但是如果愿意,您可以将函数的代码直接打包在脚本块中。

function accountExpiresToString($accountExpires) {
    if (($_.AccountExpires -eq 0) -or 
        ($_.AccountExpires -eq [int64]::MaxValue)) {
        "Never expires"
    }
    else {
        [datetime]::fromfiletime($accountExpires)
    }
}

Import-Module ActiveDirectory
...
ForEach ($Group in $Groups) {
  Get-ADGroupMember ... | 
    Get-ADUser -Properties ...,AccountExpires | 
    Select-Object @{l="expiration_date";e={ accountExpiresToString($_.AccountExpires)}} | 
    Export-Csv ...
}

更新:如果感兴趣,这是MSDN上的一个页面,描述0和0x7FFFFFFFFFFFFFFFFF([int64]::MaxValue)表示一个永不过期的帐户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档