Powershell - 忽略csv中不是用户的联系人的项目

时间:2013-12-11 01:08:43

标签: powershell csv contact

PowerShell似乎不想为循环嵌套,所以我猜这必须是管道...

目前,我正在从.csv中提取用户名列表(A列)及其更新的帐户到期日期(B列)。我想要做的是交叉引用文件中的每个用户名,以确保它确实是用户而不是“联系人”。有时用户被禁用。考虑到即使到期日期是最新的,帐户也将保持禁用状态。但是,当我点击一个联系人而不是实际用户的用户名时,它似乎失败了。 (为什么列表中的联系人?因为列表来自供应商)

Import-Module ActiveDirectory
$userlist = Import-Csv "\\share\expired.csv" -Header Name,Date


foreach ($line in $userlist) {  

    $line
    Set-ADAccountExpiration -Identity $line.Name -Date $line.Date

}

3 个答案:

答案 0 :(得分:0)

Import-Module ActiveDirectory
$userlist = Import-Csv "\\share\expired.csv" -Header Name,Date

foreach ($line in $userlist) {  

    try { 
      Set-ADAccountExpiration -Identity $line.Name -Date $line.Date 
      $line
    }
    catch { "could not expire: $line" }
}

答案 1 :(得分:0)

管道到Where-Object并检查当前名称是否为用户对象:

Import-Csv \\share\expired.csv -Header Name,Date | 
Where-Object { Get-ADObject -LDAPFilter "(&(name=$($_.Name))(objectclass=user))" } |
Foreach-Object { Set-ADAccountExpiration ... }

答案 2 :(得分:0)

如果您不想要管道,continue将移动到foreach循环中的下一个项目。

foreach ($line in $userlist) {
    <Shay Levy's nifty check for user vs contact>
    if ($contact) {continue}
    $line
    Set-ADAccountExpiration -Identity $line.Name -Date $line.Date

}