PDA

Показать полную графическую версию : Active directory проблема


andri190
02-10-2015, 08:02
Нужно изменить этот код так,чтобы искал не пользователя и группу,а группу>всех пользователей в ней>вложенные группы>пользователей вложенной группы и так далее.
Наставник вообще не чего объяснять не хочет.(

import-module ActiveDirectory

Function Get-UserMembership
{
Param($UserAccount)
Process
{
Try
{
$Groups = (Get-ADUser -Identity $UserAccount -Properties MemberOf | `
Select-Object MemberOf).MemberOf
}

Catch
{
Return $Nothing
}
$GroupItems = @()

ForEach ($Group in $Groups)
{
$var = $group.split(",")
$var1 = $var[0]
$ADGroup = $var1.Substring(3)
$GrpItems = New-Object -TypeName PSObject -Property @{
Memberof = $ADGroup}
$GroupItems += $GrpItems
}

Return $GroupItems | Sort memberOf
}
}

Function Get-UserMembership_ByName
{
Param($UserName)
Process
{
Try
{
$ResultNumber = (Get-ADUser -Filter {Name -eq $UserName} | Measure-Object).Count
}

Catch
{
Return $Nothing
}

If ($ResultNumber -eq 0)
{
Write-Host "There is no such user in the system."
Return $Nothing
}

ElseIf ($ResultNumber -ge 2)
{
Write-Host "There are several users in the system with the provided name." `
"Please use the user account way."
Return $Nothing
}

Else
{
$Groups = (Get-ADUser -Filter {Name -eq $UserName} -Properties memberof | `
Select-Object MemberOf).memberof
$GroupItems = @()
ForEach ($Group in $Groups)
{
$var = $group.split(",")
$var1 = $var[0]
$ADGroup = $var1.Substring(3)
$GrpItems = New-Object -TypeName PSObject -Property @{
Memberof = $ADGroup}
$GroupItems += $GrpItems
}
Return $GroupItems | Sort memberOf
}
}
}

$UserAccount = $Nothing
$UserAccount = Read-Host 'What is the user account? (Type nothing to search by a user name)'

If ($UserAccount -eq '')
{
$UserAccount = Read-Host 'What is the user name? (Last name and first name)'
$Result = UserMembership_ByName $UserAccount | Sort Memberof
}

Else
{
$Result = Get-UserMembership $UserAccount | Sort Memberof
}

If ($Result -eq $Nothing)
{
Write-Host "Nothing is found. The result file is not created."
}

Else
{
$OutFile = (Get-Childitem env:USERPROFILE).Value + "\Desktop\$UserAccount.csv"
$Result | Export-Csv $OutFile -Delimiter "t" -Encoding UTF8
Write-Host "The result is in $OutFile file."
}

Kazun
02-10-2015, 08:52
Get-ADGroupMember Administrators -Recursive

andri190
02-10-2015, 08:55
Get-ADGroupMember Administrators -Recursive »
А куда это вписывать?

Iska
02-10-2015, 19:20
В командную строку PowerShell. В код скрипта PowerShell.

andri190
07-10-2015, 11:21
Get-ADGroupMember Administrators -Recursive »
Я попробовал создать новый скрипт и это использовать,но вывод вообще не тот,что надо.
Заместо "Administrators", что можно ещё вписать?(просто он выдаёт трёх реальных пользователей и потом какие-то группы)
А мне надо получить группа-пользователи-вложенные группы-пользователи вложенных групп.

Kazun
09-10-2015, 10:08
1) Заместо "Administrators" - да, любую группу можно указать
2) (просто он выдаёт трёх реальных пользователей и потом какие-то группы) - Вранье, прежде чем писать, иногда лучше проверять, глупо выглядит. С параметром Recursive - группы никогда не возвращаются.

https://gallery.technet.microsoft.com/scriptcenter/Get-nested-group-15f725f2 - Get nested group membership - function

Get-ADNestedGroupMembers Administrators | Out-GridView




© OSzone.net 2001-2012