我正试图为我们的支持团队创建一个模块,该模块将包含我们日常使用的一些工具,但到目前为止我们一直使用CMD。
我们使用的命令之一是net user $username /domain
,用于检查用户的密码是否已过期,以及命令输出中所有其他有用的详细信息。
我试着把这个命令放在这样的函数中:
function Get-UserDetails {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$UserName
)
net user $UserName /domain
}
该函数运行良好,但我只想过滤输出中的一些细节。问题是net user
不是PowerShell cmdlet,并且它没有属性,因此我无法选择任何属性。
所以我的问题是:
你知道在一个命令中获取所有数据的更好方法吗?因为CCD_ 3输出的数据少于CCD_。
您可以使用Get-ADUser
并从中选择msDS-UserPasswordExpiryTimeComputed
属性。问题是,即使使用-Properties *
,此属性也可能无法枚举,因此在尝试检查返回的对象时,它可能不明显。为了让变得更好,时间戳不是人类可读的格式。
尽管如此,您可以从AD cmdlet中获取密码到期日期,并使其具有如下可读性:
# Get ADUser
$user = Get-ADUser username -Properties msDS-UserPasswordExpiryTimeComputed
# Get expiry timestamp and convert it from file time format
$userCredExpiryDate = [DateTime]::FromFileTime( $user.'msDS-UserPasswordExpiryTimeComputed' )
这是该AD DS属性的MSDN文档。
对于在net user /domain
中显示但未在Get-ADUser
中显示的其他字段值,如果它们未与-Properties *
一起显示,则应该有其他AD DS属性可供搜索。对于这些,您需要在AD DS文档中查找相应的属性。
更新:有人就另一个问题(与此行为有关(将我链接到此页面,这似乎列出了可供处理的其他属性,但在尝试查看对象上的"所有"AD DS属性时不会返回这些属性。我不知道这个列表有多完整,但它是一个很好的起点,可以了解你必须使用哪些附加的AD属性。