You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:06:04