Пока я могу получать другую информацию, такую как имя, домен, пароли, 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"