根据csv文件中的employeeID移动AD用户

时间:2015-04-06 23:46:17

标签: powershell csv move

我试图根据员工编号的CSV文件将AD用户移动到不同的用户。我已经四处搜索了,我找到了一个建议并尝试了这段代码:

Import-Module ActiveDirectory

$TargetOU = "OU=Math,OU=Students,DC=domain,DC=net"
$IDs = Import-CSV "c:\testids.csv" | Select -ExpandProperty employeeID
Get-ADUser -filter * -Properties employeeID | Where { $IDs -contains $_.employeeID } | 
Move-ADObject -TargetPath $TargetOU

我的csv文件看起来像这样

employeeID
11111
22222
33333

它运行没有错误。但用户永远不会动。我正在运行Server 2012R2。

有什么建议吗?我是在错误的轨道上还是在左侧场地完全离开?

3 个答案:

答案 0 :(得分:3)

试试这个

Import-Module ActiveDirectory

$TargetOU = "OU=Math,OU=Students,DC=domain,DC=net"

$IDs = Import-CSV "c:\testids.csv" | Select employeeID

$IDs | % { Get-ADUser -Filter { employeeID -eq $_.employeeID } -Property employeeID |
Move-ADObject -TargetPath $TargetOU }

抱歉,我太快推了'回车'。这会在您开始之前将CSV保存为$ ID对象。我觉得你的管道有点乱。让我知道这是否有效,如果没有,我会再试一次。

答案 1 :(得分:0)

好的,我想要确保您首先找到正确的用户。理论是Move-ADObject没有得到任何输入。

首先,我会这样做来检查CSV文件内容。

Get-Content "c:\testids.csv" | Select -Skip 1 | ForEach-Object{"'$_'"}

然后假设它正在运行这个命令的结果是什么?

$IDs | ForEach-Object{Get-ADUser -Filter  "employeeID -eq '$_'" -Property employeeID 

从评论更新

我现在想知道你是否正在查看错误的AD属性。也许它应该是EmployeeNumber

$IDs | ForEach-Object{Get-ADUser -Filter  "employeeNumber -eq '$_'" -Property employeeNumber 

尝试一下,看看你是否需要它?

还应该尝试验证实际employeeid

中没有空格或特殊字符
"'$(Get-Aduser accountthathasid -properties employeeid | select -expand employeeid)'"

答案 2 :(得分:0)

我愿意打赌你遇到的整个问题是Get-ADUser没有返回任何用户对象。

<Previous answer removed>

编辑:好的,我放弃,这没有任何意义。我现在找不到自己的用户,通过EmployeeID查找它。我认为可能存在一些按employeeID搜索的问题,因为这不会返回任何内容:

$me = get-aduser $env:USERNAME -Properties EmployeeID
Get-ADUser -filter "EmployeeID -eq '$($me.EmployeeID)'" -Properties EmployeeID

我确认$me确实包含我的ADUser对象信息,包括我的EmployeeID。我试过了:

Get-ADUser -filter "UserPrincipalName -eq '$($me.UserPrincipalName)'"

这确实有效,所以我确信我的格式有效。此时,我退出并祝你好运。