Powershell 试图从变量中获取-Identity值
我知道最佳做法是使用属性值,如Powershell 试图从变量中获取-Identity值,powershell,active-directory,Powershell,Active Directory,我知道最佳做法是使用属性值,如名称,区分名称等。但是,我使用的是两个系统,Active Directory中唯一在两个系统中相同的字段是扩展属性1。下面是代码。错误在于foreach循环不接受-Identity的变量 Function ArchiveLeavers { Write-Host "Archiving leavers. Details below..." $csvLeavers = Import-Csv -Path $fileLeavers foreach ($
名称
,区分名称
等。但是,我使用的是两个系统,Active Directory中唯一在两个系统中相同的字段是扩展属性1
。下面是代码。错误在于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 : Cannot convert 'System.Object[]' to the type
'Microsoft.ActiveDirectory.Management.ADObject' required by parameter 'Identity'. Specified
method is not supported.
At line:21 char:57
+Move-ADObject -Identity $identity -TargetPath $F ...
+~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Move-ADObject], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.MoveADObject
移动对象:无法将“System.Object[]”转换为类型
参数“Identity”需要“Microsoft.ActiveDirectory.Management.ADObject”。明确规定
方法不受支持。
第21行字符:57
+移动对象-标识$Identity-目标路径$F。。。
+~~~~~~~~~
+CategoryInfo:InvalidArgument:(:)[Move ADObject],ParameterBindingException
+FullyQualifiedErrorId:CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.MoveADObject您使用的格式表将
$Identity
变量转换为Move ADObject
不知道的对象,该对象只获取SAM、Guid、SID等输入类型
从管道中删除格式表,并更改以下内容:
$identity = Get-ADUser -filter {extensionAttribute1 -eq $csvID} | select distinguishedName | Format-Table -HideTableHeaders
为此:
$identity = Get-ADUser -filter {extensionAttribute1 -eq $csvID}
不要对变量赋值使用格式列表/-表。它们仅用于格式化输出。谢谢!这是我把事情复杂化的错。。。。现在工作得很好。