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

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

andri190 15-09-2015 12:33 2553380

Изменить код: в каких группах состоит пользователь
 
Есть код с помощью которого находим в каких группах состоит пользователь.
Как из этого сделать, чтобы по имени пользователя выдавалась информация по определённым параметрам.

Код:

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 15-09-2015 12:47 2553386

Get-ADUser -Filter "Name -eq '$UserName'" -Properties *


Время: 07:48.

Время: 07:48.
© OSzone.net 2001-