当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 PowerShell 中获取密码到期日期 [2 种方法]

作者:精品下载站 日期:2024-12-14 05:31:30 浏览:12 分类:玩电脑

在 PowerShell 中获取密码到期日期 [2 种方法]


[玩转系统] 在 PowerShell 中获取密码到期日期 [2 种方法]

使用 Get-ADUser Cmdlet

使用 Get-ADUser cmdlet 获取 Active Directory 中某一特定用户的密码到期日期。

使用 Get-ADUser Cmdlet:

Get-ADUser -Identity Administrator 
-Properties "SamAccountName", "msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property "SamAccountName",
@{Name="PasswordExpiryDate";Expression={[DateTime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}

输出 :

SamAccountName      PasswordExpiryDate
--------------      ------------------
Administrator       8/27/2023 4:35:46 PM

Get-ADUser cmdlet 用于从活动目录获取一个或多个用户。我们将其与 -Identity 参数一起使用,以仅获取具有 SamAccountNamemsDS-UserPasswordExpiryTimeCompulated 属性的 Administrator 用户。我们使用 -Property 参数指定这些属性。

我们将详细信息(从 Get-ADUser cmdlet 检索)传输到 Select-Object cmdlet,以选择 SamAccountName 的值>PasswordExipryDate 属性。当我们使用 Get-ADUser 检索 msDS-UserPasswordExpiryTimeCompulated 时,PasswordExpiryDate 属性来自哪里?

我们使用 HashTable 定义自定义 PowerShell 对象来创建一个计算/自定义属性,其名称为 PasswordExpiryDate ,并且将使用 msDS-UserPasswordExpiryTimeCompulated 属性计算该值。

创建计算属性时,表达式计算 PasswordExpiryDate 属性的值。它使用 DateTime 类的 FromFileTime() 方法将 msDS-UserPasswordExpiryTimeCompulated 转换为 DateTime 对象。

这样做的原因是为了使输出更容易理解。在HashTable中,分号被用作分隔符。如果您不想使用它,请通过键盘按 Enter 在不同的行上定义 NameExpression

使用 Get-ADUser cmdlet 获取 Active Directory 中所有用户的密码到期日期。

使用 Get-ADUser Cmdlet:

Get-ADUser -Filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} 
-Properties "SamAccountName", "msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property "SamAccountName",
@{Name="PasswordExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}

输出 :

SamAccountName      PasswordExpiryDate
--------------      ------------------
Administrator       8/27/2023 4:35:46 PM

此示例与上一个示例类似,但我们使用指定的条件获取了活动目录中所有用户的到期日期。在这里,我们使用 -Filter 参数仅选择 EnabledPasswordNeverExpires 属性等于 $True的用户> 和 $False 分别。我们使用 -eq 来确定相等性,而 -and 是逻辑 AND 运算符,如果两个条件都为 true,则条件表达式为 true。

在我们的示例中,仅 Administrator 用户满足条件,因此我们获得了其密码到期日期。

如果要将排序后的输出导出到 CSV 文件,请使用以下脚本。

使用 Get-ADUser Cmdlet:

Get-ADUser -Filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} 
-Properties "SamAccountName", "msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property "SamAccountName",
@{Name="PasswordExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}|
Sort-Object "PasswordExpiryDate" | Out-File C:\PasswordExpiryDates.csv

输出:PasswordExpiryDates.csv 的内容:

SamAccountName      PasswordExpiryDate
--------------      ------------------
Administrator       8/27/2023 4:35:46 PM

此代码片段与前一个代码片段相同,但附加了两个 cmdlet。我们使用 Sort-Object cmdlet 根据 PasswordExpiryDate 对接收到的输入进行排序,并将其通过管道传输到 Out-File cmdlet,后者将其写入到指定文件中。在我们的例子中,它是 PasswordExpiryDates.csv

Sort-Object 默认情况下按升序排序。使用-Descending参数按降序排序。

使用net user命令

使用net user命令获取活动目录中的密码到期日期。通常,当您想要快速检索某个特定用户的密码到期日期时,请使用此命令。

使用网络用户命令:

net user Administrator /domain | find "Password expires"

输出 :

Password expires        8/27/2023 4:35:46 PM

下面我们再举一个例子。

使用网络用户命令:

net user john.powell /domain | find "Password expires"

输出 :

Password expires        Never

不要忘记将 Administratorjohn.powell 替换为您的用户名。

这就是在 PowerShell 中获取密码过期日期的全部内容。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯