Я использую Windows 7 Professional.
Я знаю, как получить список всех пользователей в группе:
$ou="User Groups"
$userADName="RRAS VPN SSL"
$userADPath="LDAP://proddc6.prod.root/CN="+$userADName+",OU="+$ou+",DC=prod,DC=root"
$user = [adsi] $userADPath
$user.Member
Я пробовал перебирать этот список, создавая [adsi]
объект для каждого:
$ou="User Groups"
$userADName="RRAS VPN SSL"
$userADPath="LDAP://proddc6.prod.root/CN="+$userADName+",OU="+$ou+",DC=prod,DC=root"
$user = [adsi] $userADPath
$user.Member| ForEach-Object {[adsi] ("ldap://proddc6.prod.root/" + $_)}
Я думал перебрать список объектов и получить адрес электронной почты и полное имя, а затем запустить некоторые команды, используя эту информацию. Вместо этого возникает ошибка:
The following exception occurred while retrieving member "PSComputerName": "Unknown error (0x80005000)"
+ CategoryInfo : NotSpecified: (:) [format-default], ExtendedTypeSystemException
+ FullyQualifiedErrorId : CatchFromBaseGetMember,Microsoft.PowerShell.Commands.FormatDefaultCommand
Как я могу перебирать список пользователей в группе, обрабатывая адрес электронной почты и полное имя для каждого пользователя?
Вы получаете эту ошибку, потому что путь LDAP, который вы отправляете в цикл, неправильный. Вы трубите $user.Member
к ForEach-Object
, он отправляет всех пользователей, а не по одному.
Итак, вы отправляете что-то вроде:
ldap://proddc6.prod.root/CN=User1,CN=Users,DC=prod,DC=root CN=User2,CN=Users,DC=prod,DC=root
Я создал этот сценарий на основе вашего, он делает то, что вам нужно: взаимодействует с членами группы. Делайте с объектом что хотите $useradsi
в петле.
$ou="User Groups"
$userADName="RRAS VPN SSL"
$objADSI = [adsi]””
$domain = $objADSI.distinguishedname
$userADPath="LDAP://CN="+$userADName+",OU="+$ou+",$domain"
$user = [adsi] $userADPath
foreach($child in $user.member) {
$useradsi = [adsi] "LDAP://$child"
}