Net User $userName /domain



我正试图为我们的支持团队创建一个模块,该模块将包含我们日常使用的一些工具,但到目前为止我们一直使用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属性。

最新更新