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

PowerShell中$UName变量无法传入Where-Object问题求助

问题分析与解决

首先,你用-Contains是错误的——这个运算符是用来检查集合是否包含指定元素,而非字符串模糊匹配,换回-like才是正确的选择。你的代码里$UName变量本身可以正常传入Where-Object脚本块,没输出结果大概率是以下原因导致:

排查步骤

  • 先确认AD中存在同时满足name包含输入值、company包含XYZ Corp的用户。可以单独运行这条命令,先检查符合公司条件的用户:

    Get-ADUser -Filter * -Properties Company | Where-Object {$_.Company -like "*XYZ Corp*"} | Select-Object Name, Company
    

    如果这步没有输出,说明要么公司名称不符合(比如实际是XYZ Corporation、存在大小写差异,或者用了其他属性字段),要么根本没有符合公司条件的用户。

  • 确认$UName的输入值正确,比如在Read-Host后加一行输出变量,检查是否有多余空格或输入错误:

    Write-Host "当前搜索关键词:'$UName'"
    

优化解决方案

直接把过滤条件放到Get-ADUser的-Filter参数里,让AD服务器直接返回符合条件的用户,效率比拉取所有用户到本地过滤高得多,也能避免潜在的变量作用域问题:

cls

$UName = Read-Host -Prompt "Name or part of name to search"
Write-Output "Searching for: $UName, please wait"

Get-ADUser -Filter "Name -like '*$UName*' -and Company -like '*XYZ Corp*'" `
    -Properties Title, Company, Country, MailNickname |
    Select-Object Name, Title, Company, Country, MailNickname

Pause

注意:-Properties只需要指定你实际需要的属性,不用写*,减少不必要的数据传输。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:41:28