【问题标题】:Powershell import exported filesPowershell 导入导出的文件
【发布时间】:2018-09-21 08:12:55
【问题描述】:

我需要根据电子邮件地址更新多个用户的到期日期。不幸的是,我无法让它工作,所以现在我首先将电子邮件地址转换为 samAccountname,然后根据 samAccountName 设置有效日期。不幸的是,我真的不知道如何将这两个代码连接到一个脚本中。你能告诉我应该如何连接它们吗?谢谢。

Import-Module activedirectory
$users = Get-Content C:\Scripts\test.txt
$users | ForEach-Object {
    Get-ADUser -Filter "samAccountName -eq '$_'" -properties samaccountname | Select samaccountname
} | Export-CSV C:\Scripts\test.csv" -NoTypeInformation -Encoding UTF8



Import-CSV  "C:\Scripts\test.csv" | ForEach-Object {
$usr = get-aduser $_.samAccountName  |Select samAccountName  
Set-ADAccountExpiration -Identity $usr.samAccountName  -DateTime '21/09/2018' -Verbose
} 

【问题讨论】:

    标签: active-directory powershell-ise


    【解决方案1】:

    我希望我了解您想要实现的目标,您拥有包含用户电子邮件和到期日期的 CSV 文件。并且您想使用此信息来更新用户的到期日期。

    假设您在 CSV 中有以下标题,“用户电子邮件”和“用户到期日期”。因此,当您将 CSV 文件导入变量时,您将拥有一个带有信息的 PS 自定义对象。假设我们使用 $Users 变量。

    PS C:\> $users = Import-Csv -Path C:\Users\user\Desktop\users.csv
    
    PS C:\> $users
    
    User Email             User expiration date
    ----------             --------------------
    contact@saggiehaim.net 24/09/2018          
    info@saggiehaim.net    20/09/2018          
    admin@saggiehaim.net   28/09/2018       
    

    现在我们可以运行一个 for 循环,找到用户并设置到期日期。我正在做的是查询 AD 并询问它 EmailAddress 属性,然后我根据用户电子邮件进行过滤,当我们找到对象时,我们将其通过管道传递给 set-ADAccountExpiration

    foreach ($user in $users) {
        $UserEmail = $user.'User Email'
        Get-ADUser -Properties EmailAddress -filter "EmailAddress -eq $useremail" | Set-ADAccountExpiration -DateTime $user.'User expiration date' -Verbose
    }
    

    需要考虑的事项:

    1.此脚本取决于您在 EmailAddress 属性中拥有用户电子邮件地址的假设

    2.过期日期以与你的windows相同的格式存储,如果不是你必须转换它

    3.如果列表很大,我建议先从活动目录中获取所有用户一次,然后从这个列表中找到用户,不要一遍又一遍地查询LDAP

    在投入生产之前始终进行测试!!!也许我不知道,一切都错了;)

    我希望我能帮助你一点点。抱歉英语不好。

    【讨论】:

    • 您好,很抱歉我的回复晚了,最近几天很忙。你的脚本适合你吗?您理解正确,不幸的是,当我尝试运行脚本时,它无法处理错误消息 Get-ADuser : Error parsing query: 'EmailAddress -eq'。我的 Csv 看起来完全符合您的建议。
    • 嘿,当我尝试运行它时,它没有任何问题.. 当您导入 csv 时,您可以将您的标题粘贴到这里吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2018-12-01
    • 1970-01-01
    相关资源
    最近更新 更多