gpt4 book ai didi

PowerShell 脚本 : AD query based on computer-name pattern not returning results

转载 作者:行者123 更新时间:2023-12-02 23:38:15 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Get-Aduser -Filter will not accept a variable

(7 个回答)


4年前关闭。




我正在尝试创建一个 PowerShell 脚本,该脚本从一组部分机器名称中获取一个列表并将它们返回给我

到目前为止,我已经导入了 ActiveDirectory 模块并设置了数组。然后我对数组运行一个 foreach 但它不返回任何结果,而是转到一个新行。

我尝试将 Get-ADComputer 行分配给一个变量并调用该变量。我也尝试使用 Return 并没有达到我的结果。

结果可以打印在屏幕上的列表中,没关系。我只需要它来返回结果,然后我就可以从中建立起来。

这是我到目前为止所做的:

$getPC = @("7477", "7473", "7474")
foreach ($i in $getPC)
{
Get-ADComputer -filter {name -like "*$i*"} | select name
}

当我单独运行 Get-ADComputer 行并输入位置参数时,我没有问题。有任何想法吗?

最佳答案

尽管这种做法很普遍,不要使用脚本 block ( { ... } ) 作为 -Filter论据 .

构建您的 -Filter作为字符串 ,即 -Filter参数的实际类型;如果您这样构建它,您将避免许多晦涩的问题。

所以,而不是:

-Filter { Name -like "*$i*" } # WRONG - do not use { ... }

采用:
-Filter "Name -like '*$_*'" # OK - use of a string

解释见 this answer我的。

顺便说一句,您可以使用带有 ForEach-Object 的单个管道稍微简化命令。 cmdlet,在其脚本中阻止自动 $_变量(别名: $PSItem)表示手头的输入对象:
"7477", "7473", "7474" |
ForEach-Object { Get-ADComputer -Filter "Name -like '*$_*'"} |
Select-Object Name

关于您的原始命令:As Seth建议,最好使用比 $i 更具描述性的循环变量名,如 $computer .

关于PowerShell 脚本 : AD query based on computer-name pattern not returning results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49185607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com