仅为非空值导入 CSV 和设置属性
Import-CSV adn set attributes only for non-empty values
我有这样的 CSV
EMP_ID DEP_ID LOGIN_AD
0102 042 jane.doe
0103 john.doe
0104 042
0105 046 john.smith
我想创建脚本来导入此 csv 和用户帐户上的下一个设置值,例如此 extenssionattribute1 = EMP_ID 和 extenssionattribute2 = DEP_ID。主要是脚本应该跳过空值。在下面的示例中,脚本应在 jane.doe 帐户上设置 extenssionattribute1 = 0102,extenssionattribute2 = 042,但在 john.doe 上仅设置 extenssionattribute1 = 0103,脚本应跳过没有 LOGIN_AD.
的行
现在我正在尝试这样的事情:
Import-CSV "c:\test.csv" | foreach-object {
$adLogin = @($_.LOGIN_AD) | where-object{$_};
if (Get-AdUser -Identity $adLogin)
{
if ($_.EMP_ID) {Set-admUser $adLogin -Replace @{extensionAttribute1 = $_.EMP_ID}
if ($_.DEP_ID) {Set-admUser $adLogin -Replace @{extensionAttribute2 = $_.DEP_ID}
}
但当 LOGIN_AD 为空时我仍然遇到错误。你能帮帮我吗?
给定 CSV,您需要将分隔符指定为 space,然后您需要 select 个 LOGIN_AD 不为空的对象,最后,执行您需要的操作一个 ForEach-Object 循环,也不要忘记加载属性:
Import-CSV "c:\test.csv" -Delimiter ' ' | where-object{$_.LOGIN_AD -ne ""}| foreach-object {
$adLogin = $_.LOGIN_AD
if (Get-AdUser -Identity $adLogin -properties extensionAttribute1,extensionAttribute2)
{
if ($_.EMP_ID) {Set-admUser $adLogin -Replace @{extensionAttribute1 = $_.EMP_ID} }
if ($_.DEP_ID) {Set-admUser $adLogin -Replace @{extensionAttribute2 = $_.DEP_ID} }
}
}
我有这样的 CSV
EMP_ID DEP_ID LOGIN_AD
0102 042 jane.doe
0103 john.doe
0104 042
0105 046 john.smith
我想创建脚本来导入此 csv 和用户帐户上的下一个设置值,例如此 extenssionattribute1 = EMP_ID 和 extenssionattribute2 = DEP_ID。主要是脚本应该跳过空值。在下面的示例中,脚本应在 jane.doe 帐户上设置 extenssionattribute1 = 0102,extenssionattribute2 = 042,但在 john.doe 上仅设置 extenssionattribute1 = 0103,脚本应跳过没有 LOGIN_AD.
的行现在我正在尝试这样的事情:
Import-CSV "c:\test.csv" | foreach-object {
$adLogin = @($_.LOGIN_AD) | where-object{$_};
if (Get-AdUser -Identity $adLogin)
{
if ($_.EMP_ID) {Set-admUser $adLogin -Replace @{extensionAttribute1 = $_.EMP_ID}
if ($_.DEP_ID) {Set-admUser $adLogin -Replace @{extensionAttribute2 = $_.DEP_ID}
}
但当 LOGIN_AD 为空时我仍然遇到错误。你能帮帮我吗?
给定 CSV,您需要将分隔符指定为 space,然后您需要 select 个 LOGIN_AD 不为空的对象,最后,执行您需要的操作一个 ForEach-Object 循环,也不要忘记加载属性:
Import-CSV "c:\test.csv" -Delimiter ' ' | where-object{$_.LOGIN_AD -ne ""}| foreach-object {
$adLogin = $_.LOGIN_AD
if (Get-AdUser -Identity $adLogin -properties extensionAttribute1,extensionAttribute2)
{
if ($_.EMP_ID) {Set-admUser $adLogin -Replace @{extensionAttribute1 = $_.EMP_ID} }
if ($_.DEP_ID) {Set-admUser $adLogin -Replace @{extensionAttribute2 = $_.DEP_ID} }
}
}