Powershell脚本的无法解释的数字输出

时间:2014-09-30 16:39:57

标签: powershell active-directory

我们正在努力更新AD中的scriptPath属性。我们正在以小组(大约100-200个)更新员工。为此,我创建了以下脚本。

$newScript = "foo.vbs"

# Load Employee List
$employeeList = Get-Content "NAM_logon_EmployeeList.txt"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry( "LDAP://OU=Users,DC=foobar,DC=com" )
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 100
$objSearcher.SearchScope = "Subtree"
$colProplist = "scriptPath", "distinguishedName", "cn"

# Loop through Employee List and update the script value
ForEach ( $employee In $employeeList ) {

    $objSearcher.Filter = "(&(objectCategory=person)(objectClass=user)(mail=$employee))"
    Foreach ( $colProp in $colPropList ) {
        $objSearcher.PropertiesToLoad.Add( $colProp )
    }
    $colResults = $objSearcher.FindAll()

    ForEach ( $user In $colResults ) {
        $ntuser = $user.Properties.Item("distinguishedName")
        $myUser = $user.Properties.Item("cn")

        Script to Pushout the change
        $objUser = [ADSI]"LDAP://$($ntuser)"
        $objUser.put( "scriptPath", $newScript )
        $objUser.SetInfo()
        echo "Script Added for $($myUser)"
    }

}

脚本运行正常,但第18行:

$objSearcher.PropertiesToLoad.Add( $colProp )

将数字输出到PowerShell窗口。它添加的每个对象和属性都有一个数字。

0
1
2
Script Added for Smith, John
4
5
6
Script Added for Doe, Jane

我不知道为什么要这样做。有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

只是输出命令在更新对象时输出。很多.net对象都会这样做。如果您不想看到输出,请执行以下操作:

$null = $objSearcher.PropertiesToLoad.Add( $colProp )

答案 1 :(得分:0)

从找到的文档on MSDN:

  

返回值

     

插入新元素的从零开始的索引。

因此,您看到的数字是添加元素的索引。 为了忽略这样的输出,我喜欢这样做:

$objSearcher.PropertiesToLoad.Add( $colProp ) | Out-Null