【发布时间】:2016-03-10 14:14:03
【问题描述】:
我知道最佳做法是使用属性值,例如 Name、Distinguishedname 等。但是,我正在使用两个系统,而 Active Directory 中唯一在两个系统中相同的字段是 extensionAttribute1 .下面是代码。错误在于foreach 循环并且不接受-Identity 的变量。
Function ArchiveLeavers
{
Write-Host "Archiving leavers. Details below..."
$csvLeavers = Import-Csv -Path $fileLeavers
foreach ($user in $csvLeavers)
{
$csvID = $user.ExtensionAttribute1
if (Get-ADUser -filter {extensionAttribute1 -eq $csvID} -SearchBase $LeaverOU)
{
Write-Host ($user.GivenName + ' ' + $user.LastName) " is already in leavers"
}
else
{
ForEach-Object
{
$identity = Get-ADUser -filter {extensionAttribute1 -eq $csvID} | select distinguishedName | Format-Table -HideTableHeaders
write-host ($user.GivenName + ' ' + $user.LastName) " needs moving"
Move-ADObject -Identity $identity -TargetPath $LeaverOU;
Set-ADUser -Add @{extensionAttribute7=$user.ExtensionAttribute7}
Write-Host ($user.GivenName + ' ' + $user.LastName) " has been moved"
}
}
}
}
这是错误:
Move-ADObject : 无法将 'System.Object[]' 转换为类型
参数“Identity”需要“Microsoft.ActiveDirectory.Management.ADObject”。指定的
方法不受支持。
在行:21 字符:57
+Move-ADObject -Identity $identity -TargetPath $F ...
+~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Move-ADObject], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.MoveADObject
【问题讨论】:
-
不要将 Format-list/-table 与变量赋值一起使用。它们仅用于格式化输出。
标签: powershell active-directory