【发布时间】:2015-08-11 14:12:58
【问题描述】:
您好,我正在运行以下代码来更新 AD 中的用户信息
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、姓氏、姓名首字母、部门、部门代码、公司编号、WORKTELEPHONE、移动电话、WORKPHONESHORTCODE、EMAILPRIMARY、传真、街道、城镇、邮政编码E、国家、公司名称、报告邮件、实际办公室、部门名称、办公室、国家2 ,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
提前致谢
【问题讨论】:
-
我尝试了代码修改,但是当 AD 中的字段应该为空时,我仍然会在 AD 中得到奇怪的字符。问题似乎在于 $fax = $null。对于 null 为什么要放置那个奇怪的字符 -
-
我强烈建议不要使用
foreach($_ in $Users)语法。$_是保留变量。如果你想使用它,我建议使用 to ForEach-Object cmdlet ($Users | ForEach-Object {[...]}) 而不是 foreach 语句。
标签: powershell csv import