使用 Powershell 将本地用户、组成员身份和启用状态列出到单个 csv 文件中

使用 Powershell 将本地用户、组成员身份和启用状态列出到单个 csv 文件中

我正在尝试创建一个 .csv 文件,列出所有本地用户、每个用户的组成员身份以及是否使用 Powershell 启用用户帐户。

我已经发现我已经能够修改答案以遍历网络上的机器列表,并且我已经弄清楚了如何输出到单个 csv 文件,但我需要在输出文件中包含机器名称。感谢您的帮助/提示...

Function Check-Enabled ($Username) 
{
-not (Get-WmiObject Win32_UserAccount -filter "LocalAccount=True AND Name='$Username'").disabled
}

$Nodes= "Machine1", "Machine2", "Machine3"

ForEach ($Node in $Nodes)
{  
$adsiPath = ("WinNT://" + $Node)
$adsi = [ADSI]$adsiPath 

If (Test-Connection -BufferSize 32 -Count 1 -ComputerName $Node -Quiet)
    {
        $SingleMachine = $adsi.Children | where { $_.SchemaClassName -eq 'user' } | ForEach-Object {
            $groups = $_.Groups() | ForEach-Object {
                $_.GetType().InvokeMember('Name', 'GetProperty', $null, $_, $null)
            }
            $_ | Select-Object @{n='UserName';e={$_.Name}},
                               @{n='Groups';e={$groups -join ';'}},
                               @{n='Enabled';e={Check-Enabled $_.Name}}
        } 
        $AllMachines += $SingleMachine  
    }     
}

$AllMachines | Export-CSV -NoTypeInformation -Path ("C:\Users\"+$env:UserName+"\Desktop\AR-SingleFile.csv")

答案1

将另一个计算属性插入到 Select-Object

        $_ | Select-Object @[n='Node';e={$Node}},
                           @{n='UserName';e={$_.Name}},
                           @{n='Groups';e={$groups -join ';'}},
                           @{n='Enabled';e={Check-Enabled $_.Name}}

相关内容