none
Правка команды PoSh RRS feed

  • Вопрос

  • Доброго дня. Хоть и вопрос не сильно серьезный, тем не менее прошу помочь.

    Есть ли возможность сократить код, убрать большое кол-во условий? Или может сделать с помощью switch по PropertyNames?

    В любом случае спасибо

    import-module activedirectory
    $csv = import-csv "U:\Desktop\1.csv" 
    $csv | ForEach-Object { 
        Get-ADUser $_.samaccountname -Properties * | where {
            Write-Host $_.name -BackgroundColor Darkred
            if ($_.department -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.department }
            if ($_.title -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.title }
            if ($_.company -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.company }
            if ($_.postalcode -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.postalcode }
            if ($_.streetaddress -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.streetaddress }
            if ($_.homephone -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.homephone }
            if ($_.wwwhomepage -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.wwwhomepage }
            if ($_.l -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.l }
            if ($_.facsimiletelephonenumber -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.facsimiletelephonenumber }
            if ($_.telephonenumber -eq $null) { Write-Host "empty" -BackgroundColor Blue} else { Write-Host $_.telephonenumber }
        }
    } 


    скрипт вообще записывает данные в пользователя из csv в ad.

    Но если поле в CSV пустое, пош ругается. Что нельзя применить $_.l со значением $null к данным ад. поле не должно быть пустым. Спасибо

    • Изменено JabBaton 11 июля 2014 г. 8:21
    11 июля 2014 г. 8:19

Ответы

  • $prop = Write-Output department title company postalcode streetaddress homephone wwwhomepage l facsimiletelephonenumber telephonenumber
    $csv | ForEach-Object { 
        $user = Get-ADUser $_.samaccountname -Properties $prop 
        Write-Host $user.name -BackgroundColor Darkred
    	$prop | Foreach {
    		if ($user.$_ -eq $null) { Write-Host "$_ `t`t empty" -BackgroundColor Blue} else { Write-Host "$_ `t`t $($user.$_)" }
    	}
    }

    • Предложено в качестве ответа Vector BCOModerator 11 июля 2014 г. 9:32
    • Помечено в качестве ответа JabBaton 11 июля 2014 г. 9:51
    11 июля 2014 г. 8:49
    Отвечающий

Все ответы

  • автозаменой не судьба в вашес цсвшном файлике поменять ",," на ",empty,"(ну или что у вас там за разделитель)?
    11 июля 2014 г. 8:46
  • $prop = Write-Output department title company postalcode streetaddress homephone wwwhomepage l facsimiletelephonenumber telephonenumber
    $csv | ForEach-Object { 
        $user = Get-ADUser $_.samaccountname -Properties $prop 
        Write-Host $user.name -BackgroundColor Darkred
    	$prop | Foreach {
    		if ($user.$_ -eq $null) { Write-Host "$_ `t`t empty" -BackgroundColor Blue} else { Write-Host "$_ `t`t $($user.$_)" }
    	}
    }

    • Предложено в качестве ответа Vector BCOModerator 11 июля 2014 г. 9:32
    • Помечено в качестве ответа JabBaton 11 июля 2014 г. 9:51
    11 июля 2014 г. 8:49
    Отвечающий
  • не выйдет. я же говорю, что из CSV будет запись вестись в АД. И что тогда, в пустых строках AD будет слово empty? Мне это не нужно
    11 июля 2014 г. 9:23