【发布时间】:2014-09-02 17:11:46
【问题描述】:
我正在尝试从一个 csv 文件导入用户,该文件是从另一个域导出的。不幸的是,manager 属性让我很难受。
1.到目前为止我做了什么(导出):
我将用户属性从 AD1 与域名 oldDomain.com 导出到 export.csv。为了生成 export.csv 文件,我使用了以下命令:
Get-ADUser -Filter * -Property * | Select-Object givenName,sn,name,displayName,sAMaccountName,manager | Export-Csv -Encoding "UTF8" -path \\hostex\Share\export.csv
这将导致以下文件:
"givenName","sn","name","displayName","sAMaccountName","manager"
"Test","User1","Test User1","Test User1","test.user1",
"Test","User2","Test User2","Test User2","test.user2","CN=Test User1,OU=Users,DC=oldDomain,DC=com"
2。导入问题
之后,我尝试将用户导入/添加到使用域名 newDomain.org 的 AD2 中。我的命令如下所示:
Import-Csv \\hostex\Share\export.csv | ForEach { New-ADUser -AccountPassword (ConvertTo-SecureString Pass321? -AsPlainText -force) -Path "OU=Users,DC=newDomain,DC=org" -GivenName $_.givenName -Name $_.name -Surname $_.sn -DisplayName $_.displayName -SamAccountName $_.sAMAccountName -Manager $_.manager.Replace("DC=oldDomain,DC=com","DC=newDomain,DC=org") }
这导致ADIdentityResolutionException。由于 export.csv 的第一行没有为 manager 属性设置值,因此该命令尝试在 AD2 中查找用户身份 ""。这是不可能找到的。因此用户不会被添加到 AD2。
为了解决这个问题,我想添加某种 If 语句,仅当 export.csv 中的等效值不为空 ($_.manager -notlike $null) 时才设置 manager 属性的值。任何想法如何实现这一目标?
【问题讨论】:
标签: powershell active-directory