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

如何在PowerShell GUI的Out-GridView中添加列?获取AD用户办公地点

解决方案

要在Out-GridView中添加办公地点列,你需要做两个关键修改:

  1. 调用Get-ADUser时指定要获取办公地点属性(AD中对应physicalDeliveryOfficeName,也可以用别名Office)和邮箱属性——默认Get-ADUser不会返回这些扩展属性。
  2. 不要直接用ExpandProperty展开SamAccountName,而是选择需要展示的多列(比如SamAccountName、办公地点),这样Out-GridView会显示完整的表格。

修改后的函数代码如下:

function getacctname {
    $fname = $FirstName.Text
    $lname = $LastName.Text
    Try {
        # 获取包含办公地点的用户对象,选择需要的列展示到GridView
        $selectedUser = Get-ADUser -Filter "GivenName -eq '$fname' -and SurName -eq '$lname'" -Properties mail, physicalDeliveryOfficeName |
            Select-Object SamAccountName, @{Name='办公地点'; Expression={$_.physicalDeliveryOfficeName}}, mail |
            Out-Gridview -Title '选择Windows登录账户' -PassThru
        
        # 给控件赋值
        if ($selectedUser) {
            $User.Text = $selectedUser.SamAccountName
            $Email.Text = $selectedUser.mail
        }
    }
    Catch {
        # 可根据需求添加错误提示
        Write-Warning "未找到匹配用户或发生错误: $_"
    }
}

关键说明:

  • -Properties mail, physicalDeliveryOfficeName:明确告知Get-ADUser拉取这两个扩展属性,否则无法获取办公地点和邮箱信息。
  • 计算属性@{Name='办公地点'; Expression={$_.physicalDeliveryOfficeName}}:把AD原生属性名转换成更易懂的列名,你也可以直接用physicalDeliveryOfficeName作为列名。
  • 先将选中的用户对象存入$selectedUser变量,再从中提取值,避免重复调用Get-ADUser,提升执行效率。
  • 添加if ($selectedUser)判断,防止用户取消选择时出现空值错误,同时补充Catch块处理异常场景。

内容的提问来源于stack exchange,提问作者PCMedicJAX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:20:30