Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Active directory проблема (http://forum.oszone.net/showthread.php?t=306146)

andri190 02-10-2015 08:02 2559896

Active directory проблема
 
Нужно изменить этот код так,чтобы искал не пользователя и группу,а группу>всех пользователей в ней>вложенные группы>пользователей вложенной группы и так далее.
Наставник вообще не чего объяснять не хочет.(

Скрытый текст
Код:

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 2559908

Код:

Get-ADGroupMember Administrators -Recursive

andri190 02-10-2015 08:55 2559909

Цитата:

Цитата Kazun
Get-ADGroupMember Administrators -Recursive »

А куда это вписывать?

Iska 02-10-2015 19:20 2560102

В командную строку PowerShell. В код скрипта PowerShell.

andri190 07-10-2015 11:21 2561399

Цитата:

Цитата Kazun
Get-ADGroupMember Administrators -Recursive »

Я попробовал создать новый скрипт и это использовать,но вывод вообще не тот,что надо.
Заместо "Administrators", что можно ещё вписать?(просто он выдаёт трёх реальных пользователей и потом какие-то группы)
А мне надо получить группа-пользователи-вложенные группы-пользователи вложенных групп.

Kazun 09-10-2015 10:08 2562158

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

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

Get-ADNestedGroupMembers Administrators | Out-GridView


Время: 15:26.

Время: 15:26.
© OSzone.net 2001-