Powershell 仅为非空值导入CSV adn集合属性

Powershell 仅为非空值导入CSV adn集合属性,powershell,powershell-2.0,Powershell,Powershell 2.0,我有这样的想法 EMP_ID DEP_ID LOGIN_AD 0102 042 jane.doe 0103 john.doe 0104 042 0105 046 john.smith 我想创建一个脚本,它将在用户帐户上导入这个csv和下一个设置值,比如extensionAttribute1=EMP\u ID和extensionAttribute2=DEP\u ID。主要的是脚本应该跳过空值。在下面的示例中,脚本应该在jane.doe帐户exte

我有这样的想法

EMP_ID DEP_ID LOGIN_AD
0102   042    jane.doe
0103          john.doe
0104   042    
0105   046    john.smith
我想创建一个脚本,它将在用户帐户上导入这个csv和下一个设置值,比如extensionAttribute1=EMP\u ID和extensionAttribute2=DEP\u ID。主要的是脚本应该跳过空值。在下面的示例中,脚本应该在jane.doe帐户extensionAttribute1=0102、extensionAttribute2=042上设置,但在john.doe仅extensionAttribute1=0103上,脚本应该跳过行而不登录

现在我正在尝试这样的事情:

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

但当登录广告为空时,我仍然出错。您能帮助我吗?

鉴于CSV,您需要将分隔符指定为空格,然后您需要选择登录广告不为空的对象,最后,在ForEach对象循环中执行所需操作,也不要忘记加载属性:

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