2015-05-28 2 views
2
AD

Привет Я бегу код ниже, чтобы обновить информацию о пользователе в ADCSV Импорт Powershell -

import-module activedirectory 

$Users=Import-CSV C:\UserFeed.csv 

foreach($_ in $Users) 
{ 

if ($_."FAX" -ne $null){ 
$fax = $_."FAX" 
} 
else { 
$fax = $null 
} 

if ($_."MOBILETELEPHONE" -ne $null){ 
$mobile = $_."MOBILETELEPHONE" 
} 
else { 
$mobile = $null 
} 

if ($_."COUNTRY" -ne $null){ 
$country = $_."COUNTRY" 
} 
else { 
$country = $null 
} 

$Mgr = Get-ADUser -Filter "SamAccountName -like '$($_."REPORTSTOEMAIL")'" |    
Select -ExpandProperty DistinguishedName 

Get-ADUser -filter "EmailAddress -like '$($_.EMAILPRIMARY)'" | 
Set-ADUser -Replace @{physicalDeliveryOfficeName=($_."ACTUALOFFICE");Title=    
($_."PERSONALJOBTITLE");department=($_."DeptName");company= 
($_."COMPANYNAME");facsimileTelephoneNumber="$fax";StreetAddress= 
($_."STREET");l=($_."TOWNCITY");postalCode=($_."POSTZIPCODE");Co=$country;C= 
($_."COUNTRY2");CountryCode=($_."COUNTRY3");givenName=($_."KNOWNAS");sn= 
($_."LASTNAME");telephoneNumber=($_."WORKTELEPHONE");mobile="$mobile 
";manager="$Mgr"} 
} 

Проблема заключается в CSV, где пользователь сказать, не имеет номера факса и поле пустым вместо не помещая в факс, он помещает символ пробела. Как заставить его ничего не устанавливать для этого поля.

Пример см изображение http://s22.postimg.org/nsf66ngc1/mobile.jpg

Вот что выглядит CSV как

TITLE, KNOWNAS, ФАМИЛИЯ, ИНИЦИАЛЫ, DIVISION, DEPARTMENTCODE, COMPANYREFNO, WORKTELEPHO NE, MOBILETELEPHONE, WORKPHONESHORTCODE, EMAILPRIMARY, FAX, УЛИЦА , TOWNCITY, POSTZIPCOD E, COUNTRY, COMPANYNAME, REPORTSTOEMAIL, ACTUALOFFICE, DeptName, Office, COUNTRY2, COUNTR Y3 Mr, Peter, Smith, P, Executive, IT, PL, + 44 (0) 1234 567 890 ,,, user1 @ testdomain.co.uk, + 44 (0) 1234 567 890, Road, London, QWER, Великобритания, КОМПАНИЯ, j.smith, OfficeName, Computers, Город, GB, 826

Заранее спасибо

+0

Я попробовал код но я все еще получаю странный характер в AD, когда поле должно быть пустым в AD. Проблема, похоже, связана с $ fax = $ null. Для null, почему он помещает этот странный символ - – user3770745

+0

Я настоятельно рекомендую использовать синтаксис 'foreach ($ _ in $ Users)'. '$ _' - зарезервированная переменная. Если вы хотите использовать его, я рекомендую использовать командлет forEach-Object ('$ Users | ForEach-Object {[...]}') вместо инструкции foreach. –

ответ

0
if ($_."FAX" -ne $null -and $_."FAX" -ne " "){ 
$fax = $_."FAX" 
} 
else { 
$fax = $null 
} 
+0

Привет, Пол. Я обновил код для мобильного телефона, факса и страны относительно того, что вы предложили, но все еще не работает. См. Ссылку на скриншот того, что появилось в AD http://s22.postimg.org/nsf66ngc1/mobile.jpg Как вы можете видеть, у мобильного поля есть этот забавный персонаж, и если вы скопируете его в блокнот, – user3770745

+0

Вот что CSV выглядит TITLE, KNOWNAS, ФАМИЛИЯ, иНИЦИАЛЫ, DIVISION, DEPARTMENTCODE, COMPANYREFNO, WORKTELEPHONE, MOBILETELEPHONE, WORKPHONESHORTCODE, EMAILPRIMARY, FAX, УЛИЦА, TOWNCITY, POSTZIPCODE, СТРАНА, COMPANYNAME, REPORTSTOEMAIL, ACTUALOFFICE, DEPTNAME, офис, COUNTRY2 , COUNTRY3 Mr, Peter, Smith, P, Executive, IT, PL, + 44 (0) 1234 567 890 ,,, user1 @ testdomain.co.uk, + 44 (0) 1234 567 890, Road, London, QWER , United Kingdom, COMPANY, j.smith, OfficeName, Computers, City, GB, 826 – user3770745

+1

@ user3770745 Пожалуйста, добавьте это на свой вопрос. Никто не может прочитать это в комментариях – Matt

1

лучший способ, чтобы проверить строку в этом случае будет [строка] :: IsNullOrWhiteSpace()

Попробуйте это:

if ([string]::IsNullOrWhiteSpace($_."FAX"){ 
    $fax = $null 
} else { 
    $fax = $_."FAX" 
} 
+0

Я пробовал поправку кода, но до сих пор получаю странный символ в AD, когда поле должно быть пустым в AD. Проблема, похоже, связана с $ fax = $ null. Для null, почему он помещает этот странный символ – user3770745

+0

OK, вместо этого попробуйте $ Fax = "". –

+0

Я попробовал с "" и все равно то же самое, что и придает этому забавному персонажу – user3770745

Смежные вопросы