如何将PowerShell中Get-ADUser的输出展示到Windows Forms的ListView控件
实现步骤
你只需要先完成ListView控件的视图和列配置,再修改查询按钮的点击逻辑将结果写入控件即可,具体修改如下:
1. 配置ListView控件基础属性
在你定义$lwOutput变量的代码段后,补充以下配置,将ListView设置为详情视图并添加对应数据列:
# 配置ListView为详情视图,显示列标题 $lwOutput.View = [System.Windows.Forms.View]::Details # 添加两列,对应你要展示的Name和SamAccountName属性,列宽可自定义调整 $lwOutput.Columns.Add("用户姓名", 180) | Out-Null $lwOutput.Columns.Add("域登录账号", 280) | Out-Null $lwOutput.FullRowSelect = $true # 可选:开启整行选中效果,提升使用体验
2. 修改btnGetUsers函数逻辑,将查询结果写入ListView
将你现有的btnGetUsers函数替换为以下代码即可:
function btnGetUsers { # 先清空上次查询的旧结果,避免数据叠加 $lwOutput.Items.Clear() $UserList = $tbName.Text.Trim() # 过滤空输入,避免无效查询报错 if([string]::IsNullOrEmpty($UserList)) { return } # 自动导入AD模块(如果脚本运行环境未提前导入的话) if(-not (Get-Module ActiveDirectory -ErrorAction SilentlyContinue)) { Import-Module ActiveDirectory -ErrorAction Stop } # 查询AD用户 $adUsers = Get-ADUser -Filter "GivenName -eq '$UserList' -or Surname -eq '$UserList'" | select Name, SamAccountName # 遍历查询结果逐行写入ListView foreach($user in $adUsers) { $listItem = New-Object System.Windows.Forms.ListViewItem($user.Name) $listItem.SubItems.Add($user.SamAccountName) | Out-Null $lwOutput.Items.Add($listItem) | Out-Null } }
可选优化方案
你代码里已经定义了DataGridView控件,这类表格型数据用DataGridView展示更简单,不需要手动创建列和行,只需要在查询完成后加一行$DGVOutput.DataSource = [array]$adUsers即可自动渲染结果。
内容的提问来源于stack exchange,提问作者Atheek
相关产品推荐
相关产品推荐

