x-sept
25-07-2012, 15:03
всего доброго времени суток!
в powershell я новичок, пишу скрипты для сравнения групп не могу понять почему он не может выдать мне что участник в группах повторяется! полагаю что ошибка в условии. и как мне сделать чтобы имена выдавались мне типа "Ivan Ivanov", а не "= @{name=Ivan Ivanov}" ?
Import-Module ActiveDirectory
$Group1 = GET-ADGROUPMEMBER 'CN=somegroup1,OU=Service_Accounts,DC=office,DC=net' | select-object name | sort -property Name
$Group2 = GET-ADGROUPMEMBER 'CN=somegroup2,OU=Service_Accounts,DC=office,DC=net' | select-object name | sort -property Name
ForEach ($member1 in $Group1)
{
ForEach ($member2 in $Group2)
{
If ($member1 -eq $member2)
{
Write-Host "$member1 and $member2"
}
}
}
у второго кода немного другие заморочки:
$DN1 = 'CN=somegroup1,OU=Service_Accounts,DC=office,DC=net'
$DN2 = 'CN=somegroup2,OU=Service_Accounts,DC=office,DC=net'
$Group1 = [adsi]"LDAP://$DN1"
$Group2 = [adsi]"LDAP://$DN2"
ForEach ($User in $Group1.member)
{
if ($Group2.member -contains $User)
{
Write-Host "$User.UserName belongs to $($Group2.cn)"
}
}
выдает результат типа:
CN=Ivan Ivanov,OU=Users,DC=office,DC=net.UserName belongs to somegroup2
как мне сделать так чтобы было
Ivan Ivanov belongs to somegroup2?
Всем спасибо.
спасибо, сам справился.
чтобы выводить просто имя нужно писать так, например: $($groupname1.name)
а не сравнивалось у меня, потому что в кавычки не взял If ("$member1" -eq "$member2") - вечная моя ошибка не ставить кавычки.
вдруг кому поможет еще.
в powershell я новичок, пишу скрипты для сравнения групп не могу понять почему он не может выдать мне что участник в группах повторяется! полагаю что ошибка в условии. и как мне сделать чтобы имена выдавались мне типа "Ivan Ivanov", а не "= @{name=Ivan Ivanov}" ?
Import-Module ActiveDirectory
$Group1 = GET-ADGROUPMEMBER 'CN=somegroup1,OU=Service_Accounts,DC=office,DC=net' | select-object name | sort -property Name
$Group2 = GET-ADGROUPMEMBER 'CN=somegroup2,OU=Service_Accounts,DC=office,DC=net' | select-object name | sort -property Name
ForEach ($member1 in $Group1)
{
ForEach ($member2 in $Group2)
{
If ($member1 -eq $member2)
{
Write-Host "$member1 and $member2"
}
}
}
у второго кода немного другие заморочки:
$DN1 = 'CN=somegroup1,OU=Service_Accounts,DC=office,DC=net'
$DN2 = 'CN=somegroup2,OU=Service_Accounts,DC=office,DC=net'
$Group1 = [adsi]"LDAP://$DN1"
$Group2 = [adsi]"LDAP://$DN2"
ForEach ($User in $Group1.member)
{
if ($Group2.member -contains $User)
{
Write-Host "$User.UserName belongs to $($Group2.cn)"
}
}
выдает результат типа:
CN=Ivan Ivanov,OU=Users,DC=office,DC=net.UserName belongs to somegroup2
как мне сделать так чтобы было
Ivan Ivanov belongs to somegroup2?
Всем спасибо.
спасибо, сам справился.
чтобы выводить просто имя нужно писать так, например: $($groupname1.name)
а не сравнивалось у меня, потому что в кавычки не взял If ("$member1" -eq "$member2") - вечная моя ошибка не ставить кавычки.
вдруг кому поможет еще.