【问题标题】:Net User $userName /domain网络用户 $userName /domain
【发布时间】:2018-12-22 05:59:12
【问题描述】:

我正在尝试为我们的支持团队创建一个模块,其中将包含我们日常使用的一些工具,但直到现在我们都使用 CMD。

我们使用的命令之一是net user $username /domain,用于检查用户的密码是否已过期以及命令输出的所有其他有用详细信息。

我试图将该命令放在这样的函数中:

function Get-UserDetails {
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
        [string]$UserName
    )
    net user $UserName /domain
}

该函数工作正常,但我只想过滤输出以获取一些细节。 问题是 net user 不是 PowerShell cmdlet,它没有属性,所以我无法选择其中任何一个。

所以我的问题是:

您知道在一个命令中获取所有数据的更好方法吗?因为Get-ADUser 输出的数据少于net user

【问题讨论】:

  • 使用-PropertiesGet-ADUser 并指定您想查看的其他属性。
  • 我试过了,但是 Get-ADuser 属性没有 Password Expires 属性
  • 搜索get-aduser password expiration date 没有找到任何有用的信息?
  • @RoyW Get-ADUser *User* -Properties * 将向您展示与 AD 必须提供的用户正确相关的每一个
  • 我明白了,但在这种情况下,该命令不会枚举正确答案。老实说,我真的不确定为什么 -Properties * 中省略了该属性

标签: windows powershell active-directory cmdlets cmdlet


【解决方案1】:

您可以使用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' )

Here is the MSDN documentation for that AD DS attribute.

对于出现在net user /domain 但不在Get-ADUser 中的其他字段值 - 如果它们没有出现在-Properties * 中,您应该可以搜索其他 AD DS 属性。对于这些,您需要在 AD DS 文档中查找相应的属性。

更新another question 上的Someone linked me to this page(与此行为相关),这似乎列出了可用于处理的其他属性,但在尝试查看“全部”时未返回对象上的 AD DS 属性。我不知道这个列表有多完整,但它是了解您必须使用哪些其他 AD 属性的良好起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2010-09-25
    相关资源
    最近更新 更多