【发布时间】:2022-01-04 14:53:22
【问题描述】:
我正在尝试使用 PowerShell 在 AD 中搜索组名称。
为什么这些param 或Read-Host 都不起作用?两者都在传递字符串,但结果为空。但是,如果我将命令中的变量$ADGroup 替换为实际的组名(字符串)并运行命令Get-ADGroup...,结果将按预期提供。我尝试用单引号替换双引号,得到了相同的结果,该命令单独工作,但Read-Host 或 param 均未提供信息。我无法弄清楚为什么当它是一个变量时字符串没有被传递($ADGroup)。谢谢。
param(
[Parameter(Mandatory=$true)]
[string]$ADGroup
)
# One or the other param or Read-Host
$ADGroup = Read-Host "Enter Group Name"
PS \> Get-ADGroup -Filter {name -like "*$ADGroup*"} -Properties * | Select-Object -Property Name
Get-ADGroup -Filter {name -like '*GroupName*'} -Properties * | Select-Object -Property Name
Name
----
Results
Results
Results
Results
Results
【问题讨论】:
-
它不起作用,没有返回,或者?从技术上讲,它应该可以工作。只要传递给命令的字符串在被搜索的名称中具有相同的字符,您的代码就没有问题。即:best - 将匹配:testbesttest。正如它的名字一样。此外,
Get-ADGroup默认已经返回 name 属性。无需获取所有属性,即可选择已返回的属性。摆脱-properties。 -
带有 AD cmdlet 的基于脚本块的过滤器可能有点不稳定,请尝试使用
-Filter "name -like '*$ADGroup*'"
标签: powershell active-directory parameter-passing wildcard adgroup