我正在尝试创build一个列出所有本地用户的.csv文件,每个用户的组成员以及是否使用Powershell启用用户帐户。
我已经find了这个答案,我已经能够修改,以迭代networking上的机器列表,我已经想出了如何输出到一个单一的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")
将另一个计算的属性插入到select对象
$_ | Select-Object @[n='Node';e={$Node}}, @{n='UserName';e={$_.Name}}, @{n='Groups';e={$groups -join ';'}}, @{n='Enabled';e={Check-Enabled $_.Name}}