PowerShell中如何以内联语法在Get-AdUser命令中使用Read-Host?
PowerShell 动态AD用户查询的正确语法
你原来的写法无法生效,因为单引号包裹的字符串里,{Read-Host...}只会被当作普通文本,不会执行Read-Host命令。下面是两种可行的实现方式:
方式一:单行子表达式嵌入
直接用PowerShell的子表达式$()执行Read-Host,将结果动态插入过滤器字符串:
# 用双引号包裹过滤器,配合转义的双引号 Get-Aduser -Filter "Surname -like `"$(Read-Host -Prompt 'User surname?')`"" -Properties * | Format-List # 或者用字符串格式化拼接(可读性更好) Get-Aduser -Filter ('Surname -like "{0}"' -f (Read-Host -Prompt 'User surname?')) -Properties * | Format-List
方式二:分步/单行变量传递
先将用户输入存到变量,再代入过滤器(逻辑更清晰,也可以写成单行):
# 分步写法 $surname = Read-Host -Prompt 'User surname?' Get-Aduser -Filter "Surname -like `"$surname`"" -Properties * | Format-List # 单行写法用分号分隔命令 $surname = Read-Host -Prompt 'User surname?' ; Get-Aduser -Filter "Surname -like `"$surname`"" -Properties * | Format-List
可选:模糊匹配优化
如果需要匹配包含输入内容的所有姓氏,在过滤器里添加通配符*:
Get-Aduser -Filter "Surname -like `"*$(Read-Host -Prompt 'User surname?')*`"" -Properties * | Format-List
内容的提问来源于stack exchange,提问作者Dima Hmel
相关产品推荐
相关产品推荐

