用powshell输出AD域中用户密码到期时间小于7的用户名和到期剩余天数为txt文本
时间: 2024-02-01 10:15:20 浏览: 315
以下是一个可以实现你要求的 PowerShell 脚本:
```
# 获取所有 AD 用户账户的信息
$users = Get-ADUser -Filter * -Properties PasswordExpired, PasswordNeverExpires, PasswordLastSet, DisplayName
# 循环遍历每个用户账户
foreach ($user in $users) {
# 只关注密码过期时间小于 7 天的用户
if ($user.PasswordExpired -eq $false -and $user.PasswordNeverExpires -eq $false) {
$daysLeft = ($user.PasswordLastSet.AddDays(90) - (Get-Date)).Days
if ($daysLeft -lt 7) {
# 输出用户名和到期剩余天数
Write-Output "$($user.DisplayName) - $daysLeft 天"
}
}
} | Out-File "C:\temp\ExpiredUserPasswords.txt"
```
这个脚本会输出 AD 中所有用户账户密码过期时间小于 7 天的用户名和到期剩余天数,并把结果保存到 `C:\temp\ExpiredUserPasswords.txt` 文件中。你可以根据需要修改输出文件的路径。
相关问题
用powshell输出AD域中用户密码到期时间小于7的用户名和到期剩余天数为txt文本格式
以下是 PowerShell 脚本代码,可以实现输出 AD 域中用户密码到期时间小于7的用户名和到期剩余天数,并将结果保存为 txt 文本格式:
```
$expireDate = (Get-Date).AddDays(7)
Get-ADUser -Filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" | Where-Object { $_.msDS-UserPasswordExpiryTimeComputed -lt $expireDate } | Select-Object DisplayName, @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}, @{Name="DaysLeft";Expression={($_."msDS-UserPasswordExpiryTimeComputed" - [datetime]::Now.Ticks) / 864000000000}} | Sort-Object ExpiryDate | Format-Table -AutoSize > C:\Temp\passwordexpire.txt
```
解释:
- `$expireDate` 变量定义了密码到期时间的截止日期,这里设置为当前日期加 7 天。
- `Get-ADUser` 命令获取 AD 域中所有启用的用户,并且密码不永久有效。
- `Where-Object` 过滤器筛选出密码到期时间小于 `$expireDate` 的用户。
- `Select-Object` 命令选择输出的属性,包括用户名、到期时间和剩余天数。
- `Sort-Object` 命令按照到期时间升序排序。
- `Format-Table` 命令以表格形式输出结果,并且自适应列宽。
- `> C:\Temp\passwordexpire.txt` 将结果保存到 `C:\Temp\passwordexpire.txt` 文件中。
请注意,此脚本需要在 AD 域环境下运行,并且需要具有适当的权限才能访问 AD 域。
powshell导出AD密码到期时间小于7的用户名和到期天数为UTF-8的txt格式
可以使用以下 PowerShell 脚本来导出 AD 用户密码到期时间小于7天的用户名和到期天数,并将结果保存为 UTF-8 格式的 txt 文件:
```powershell
# 设置输出文件路径和文件名
$outputFilePath = "C:\output.txt"
# 获取 AD 用户密码到期时间小于7天的用户信息
$expiringUsers = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false -and (PasswordLastSet -ne $null) -and (PasswordLastSet -le (Get-Date).AddDays(-7))} -Properties Name, PasswordNeverExpires, PasswordLastSet | Select-Object Name, @{Name="PasswordExpiresIn";Expression={($_.PasswordLastSet).AddDays(90) - (Get-Date)}} | Where-Object {$_.PasswordExpiresIn -lt 7}
# 将结果保存为 UTF-8 格式的 txt 文件
$expiringUsers | Out-File -Encoding utf8 $outputFilePath
```
在上面的脚本中,我们首先设置了输出文件的路径和文件名。然后,使用 `Get-ADUser` 命令获取 AD 用户密码到期时间小于7天的用户信息,并通过 `Select-Object` 命令选择用户名和密码到期天数这两个属性。最后,使用 `Where-Object` 命令筛选出密码到期天数小于7天的用户信息,并将结果保存为 UTF-8 格式的 txt 文件,使用 `Out-File` 命令实现。
阅读全文