【问题标题】:how to get expiration date for users in a CSV file using PowerShell?如何使用 PowerShell 获取 CSV 文件中用户的到期日期?
【发布时间】:2021-08-09 20:08:59
【问题描述】:
Import-CSV -Path .\csv_file.csv | ForEach-Object { 
    Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} –Properties “DisplayName”, “msDS-UserPasswordExpiryTimeComputed” |
    Select-Object -Property “Displayname”,@{Name=“ExpiryDate”;Expression={[datetime]::FromFileTime($_.“msDS-UserPasswordExpiryTimeComputed”)}}
} | Export-Csv .\results.csv -NoTypeInformation

这很好用,但会在 AD 中获得所有用户。我们有成千上万的用户。

我想获取 CSV 文件(第一列)中的用户。如果可能的话,我很想在同一个文件中创建第二列,并注明到期日期。

CSV 文件

Jason.Bourne
Thomas.Smith
Judy.Doe
Topsy.kret

我修改了我的 PowerShell 脚本,但不确定如何将 CSV 文件中的值获取到 Get-ADUser 中

【问题讨论】:

  • 你的 csv 文件是什么格式的?您能否提供一个示例来说明这一点……如果需要保护隐私,请化名等。
  • @JamesC。我更新了我的代码并添加了 CSV 文件格式。这是一个非常简单的 CSV 文件,因为它只包含 samaccountname

标签: powershell csv


【解决方案1】:

在 csv 文件中带有 samaccountname 标头,例如:

samaccountname
Jason.Bourne
Thomas.Smith
Judy.Doe
Topsy.kret

您可以使用-Identity $_.samaccountname依次获取每个用户:

Import-CSV -Path C:\folder\input.csv | ForEach-Object { 
    Get-ADUser -Identity $_.samaccountname –Properties DisplayName,msDS-UserPasswordExpiryTimeComputed,Enabled,PasswordNeverExpires | Select-Object -Property Displayname,Enabled,PasswordNeverExpires,@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
} | Export-CSV C:\folder\results.csv -NoTypeInformation

【讨论】:

  • 我遇到了错误。 Get-ADUser:找不到接受参数“@{Jason.Bourne=Thomas.Smith}”的位置参数。
  • 我添加了一个带有用户名和相同内容的标题行。 Get-ADUser:找不到接受参数“@{samaccountname=Jason.Bourne}”的位置参数
  • 我已经用两种方法更新了我的答案
  • 我刚刚尝试了所有三个相同的问题。找不到位置参数。
  • 您已将标头添加到 csv 文件中?如果是这样,一切都会再次改变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2018-10-22
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
相关资源
最近更新 更多