方法调用失败,因为[Microsoft.ActiveDirectory.Management.ADPropertyValueCollection]不包含名为“op_Division”的方法

时间:2018-02-11 00:20:53

标签: windows powershell

我正在使用进度条检查在将计算机移动到特定OU“LAPTOPS”之前“COMPUTERS”容器中存在多少台计算机。请记住,当“COMPUTERS”容器中只有一台计算机时,我收到以下错误消息。然后计算机成功移动。但是,当COMPUTER容器中存在两台或更多计算机时,它不会在从容器移动到OU时投影错误。我一直在寻找答案,但没有运气。我需要一些帮助。

注意:我使用的是Powershell版本5.1.14409.1012

error: Does not contain method name 'op_Division'

  

方法调用失败,因为   [Microsoft.ActiveDirectory.Management.ADPropertyValueCollection]不包含   名为'op_Division'的方法。   在行:13 char:5   + $ percent =($ counter / $ pcName.count)* 100   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidOperation:(op_Division:String)[],RuntimeExcepti      上       + FullyQualifiedErrorId:MethodNotFound

$computerCN = 'CN=COMPUTERS,DC=MYTEST,DC=LOCAL'
$pcName = Get-ADComputer -Filter * -SearchBase $computerCN -SearchScope OneLevel
$computerOU = 'OU=LAPTOP,OU=MYHOME,DC=MYTEST,DC=LOCAL'

$counter = 0

Foreach ( $computer in $pcName )
{

    $prefix = $computer.name
    $percent = ($counter / $pcName.count) * 100

    $counter++
    Write-Progress -Activity 'Processing computers' -Status "Scanning... $counter out of $($pcName.count)" -CurrentOperation $prefix -PercentComplete $percent
    Start-Sleep -Milliseconds 500

    Switch -Wildcard ( $prefix )
                        {

                            'LAP*' { 'Moved'; Get-ADComputer $computer | Move-ADObject -TargetPath $computerOU }
                            Default { 'Skip' }

                        }
}

1 个答案:

答案 0 :(得分:0)

您确定GetADComputer返回的是多个对象吗?在期望集合时,应始终使用数组子表达式运算符强制命令的结果到集合。 $pcname = @(Get-ADComputer -Filter * -SearchBase $computerCN -SearchScope OneLevel)