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
}
答案 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
}