我正在尝试创建一个 .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}}