2015-05-28 87 views
2

你好我運行下面的代碼更新AD用戶信息CSV導入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,姓氏,姓名縮寫,分裂,DEPARTMENTCODE,COMPANYREFNO,WORKTELEPHO NE,MOBILETELEPHONE,WORKPHONESHORTCODE,EMAILPRIMARY,傳真,STREET ,TOWNCITY,POSTZIPCOD E,COUNTRY,COMPANYNAME,REPORTSTOEMAIL,ACTUALOFFICE,DeptName,Office,COUNTRY2,COUNTR Y3 Peter,Smith,P,Executive,IT,PL,+ 44(0)1234 567 890 ,,, user1 @ testdomain.co.uk,+ 44(0)1234 567 890,Road,London,QWER,英國,COMPANY,j.smith,OfficeName,Computers,City,GB,826

在此先感謝

+0

我試過代碼修正案,但當AD在AD領域空虛時,我仍然會得到奇怪的角色。這個問題似乎與$傳真= $空。對於爲什麼它把這個怪異的字符 - – user3770745

+0

我強烈建議對'foreach($ _ $用戶)'語法。 '$ _'是一個保留變量。如果你想使用它,我推薦使用ForEach-Object cmdlet('$ 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,LASTNAME,INITIALS,DIVISION,DEPARTMENTCODE,COMPANYREFNO,WORKTELEPHONE,MOBILETELEPHEPONE,WORKPHONESHORTCODE,EMAILPRIMARY,FAX,STREET,TOWNCITY,POSTZIPCODE,COUNTRY,COMPANYNAME,REPORTSTOEMAIL,ACTUALOFFICE,DeptName,Office,COUNTRY2 ,COUNTRY3 Peter,Smith,P,Executive,IT,PL,+ 44(0)1234 567 890 ,,, user1 @ testdomain.co.uk,+ 44(0)1234 567 890,Road,London,QWER ,英國,COMPANY,j.smith,辦公室名稱,計算機,城市,GB,826 – user3770745

+1

@ user3770745請將此添加到您的問題中。沒有人可以在評論中閱讀 – Matt

1

一個更好的辦法在這種情況下測試的字符串將是[字符串] :: IsNullOrWhiteSpace()

試試這個:

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

我嘗試了代碼修正,但在AD中該字段應該只是空的時候,我仍然會得到奇怪的字符。這個問題似乎與$傳真= $空。對於爲什麼它把這個怪異的字符 – user3770745

+0

好,試試$傳真=「」來代替。 –

+0

我用「」試過並仍然是同樣的東西,它給了那個有趣的字符 – user3770745