Как получить «memberof» для каждого локального пользователя на моем компьютере, используя скрипт powershell? - PullRequest
0 голосов
/ 11 апреля 2019

Пока я могу получать другую информацию, такую ​​как имя, домен, пароли, PasswordExpires и т. Д. И конвертировать ее в формат CSV. Но у меня возникают проблемы с получением сведений "MemberOf" для каждого пользователя.

   Param
  (
[Parameter(Position=0,Mandatory=$false)]
[ValidateNotNullorEmpty()]
[Alias('cn')][String[]]$ComputerName=$Env:COMPUTERNAME,
[Parameter(Position=1,Mandatory=$false)]
[Alias('un')][String[]]$AccountName,
[Parameter(Position=2,Mandatory=$false)]
[Alias('cred')][System.Management.Automation.PsCredential]$Credential
  )
$Obj = @()

$now = Get-Date

 Foreach($Computer in $ComputerName)
 {
If($Credential)
{
    $AllLocalAccounts = Get-WmiObject -Class Win32_UserAccount - 
  Namespace "root\cimv2" `
    -Filter "LocalAccount='$True'" -ComputerName $Computer - 
  Credential $Credential -ErrorAction Stop
}
else
{
    $AllLocalAccounts = Get-WmiObject -Class Win32_UserAccount -Namespace "root\cimv2" `
    -Filter "LocalAccount='$True'" -ComputerName $Computer -ErrorAction Stop
}



$Obj = $AllLocalAccounts | ForEach-Object {

        $user = ([adsi]"WinNT://$computer/$($_.Name),user")
        $pwAge    = $user.PasswordAge.Value
        $maxPwAge = $user.MaxPasswordAge.Value
        $pwLastSet = $now.AddSeconds(-$pwAge)
        # for Last Login 
        $adsi = [ADSI]"WinNT://$computer"
        $lLogin = ($adsi.Children | where {($_.SchemaClassName -eq 'user') -and ($_.Name -eq $user.Name ) })
        $lastLogin = ($lLogin.LastLogin).value

        $Group= [ADSI]"WinNT://$Server/$LocalGroup,group"
        $members = $Group.psbase.Invoke("Members")
        $members | ForEach-Object { $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null) }

     New-Object -TypeName PSObject -Property @{


       'Name'                 = $_.Name
       'Full Name'            = $_.FullName
       'Disabled'             = $_.Disabled
       'Description'          = $_.Description
       'Status'               = $_.Status
       'LockOut'              = $_.LockOut
       'Password Expires'     = $_.PasswordExpires
       'Password Last Set'    = $pwLastSet
       'Password Expiry Date' = $now.AddSeconds($maxPwAge - $pwAge)
       'Password Required'    = $_.PasswordRequired
       'Account Type'         = $_.AccountType
       'Domain'               = $_.Domain     
       'Password Age'         = ($now - $pwLastSet).Days
       'Last Login'           = $lastLogin

     }
   }

 If($AccountName)
{
    Foreach($Account in $AccountName)
    {
        $Obj|Where-Object{$_.Name -like "$Account"}
    }
}
else
{
    $Obj
}
}

Пожалуйста, проведите меня через это, чтобы получить "MemberOf" Пожалуйста, проведите меня через это, чтобы получить "MemberOf" Пожалуйста, проведите меня через это, чтобы получить "MemberOf" Пожалуйста, проведите меня через это, чтобы получить "MemberOf" Пожалуйста, проведите меня через это, чтобы получить "MemberOf"

...