我们正在努力更新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
等
我不知道为什么要这样做。有人有什么想法吗?
答案 0 :(得分:0)
只是输出命令在更新对象时输出。很多.net对象都会这样做。如果您不想看到输出,请执行以下操作:
$null = $objSearcher.PropertiesToLoad.Add( $colProp )
答案 1 :(得分:0)
从找到的文档on MSDN:
返回值
插入新元素的从零开始的索引。
因此,您看到的数字是添加元素的索引。 为了忽略这样的输出,我喜欢这样做:
$objSearcher.PropertiesToLoad.Add( $colProp ) | Out-Null