从CSV文件创建数组,每次可能有值,也可能没有值

vs91vp4v  于 2023-06-03  发布在  其他
关注(0)|答案(1)|浏览(111)

相对较新的整个powershell/脚本游戏,但喜欢认为我有足够的知识得到通过。然而,这一次让我很沮丧。因此,在我的场景中,我有一个包含新用户的CSV文件。现在我下面的脚本可以很好地完成我需要它做的事情。然而,当CSV文件中的字段没有值时,我遇到了问题。例如,我有5个用户要设置属性,但其中只有3个有我们要填充的manager字段。
因此,假设我在CSV文件中将manager字段留空,那么当我运行脚本时,它会在尝试运行Set-ADUser命令时出错。所以我的问题是,我如何正确地构建下面的数组,以允许一个用户拥有一个空的经理字段,但下一个用户需要填充相同的值?这几乎就像我需要一个if命令在数组中,我只想考虑数组中的属性,如果有一个值在CSV文件。我不相信你可以在数组中运行if命令。我希望我问的是有意义的。

$newusers = import-csv "c:\file.csv"

foreach ($newuser in $newusers) {

$userprops = @('')

$manager = Get-ADUser -Identity $newuser.Manager | Select -ExpandProperty distinguishedName

$userprops = @{
extensionAttribute9 = $newuser.extatt9
extensionAttribute11 = $newuser.extatt11
extensionAttribute14 = $newuser.extatt14
description = $newuser.Description
l = $newuser.City
title = $newuser.Title
department = $newuser.Department
c = $newuser.Country
physicalDeliveryOfficeName = $newuser.Office
manager = $manager
}

Get-ADUser -Identity $newuser.SamAccountName | Set-ADUser -Replace $userprops -Confirm:$false

}
xurqigkl

xurqigkl1#

你有没有尝试改变你是否首先在AD中检查管理器,而不是在csv内容本身周围捣乱?
比如说,改变线条

$manager = Get-ADUser -Identity $newuser.Manager | Select -ExpandProperty distinguishedName

换成这个

If ($newuser.Manager -ne "")
{
    $manager = Get-ADUser -Identity $newuser.Manager | Select -ExpandProperty distinguishedName
}
else
{
    $manager = ""
}

这样,如果csv条目有一个Manager条目,它将去检索它,如果没有,它将简单地将其设置为“”,所以什么都不设置。

相关问题