我正在尝试使此简短脚本起作用,但我不明白为什么,PowerShell会给出一些乱码和无用的错误消息!
脚本:
$us = Read-Host 'Enter Your User Group Name:' |Get-ADGroup -Filter {name -like "*$us*"} -Properties Description,info | Select Name | Sort Name
错误:
Get-ADGroup : The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input. At line:1 char:42 + ... ser Name:' |Get-ADGroup -Filter {name -like "*$us*"} -Properties Desc ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (River:PSObject) [Get-ADGroup], ParameterBindingException + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.ActiveDirectory.Management.Commands.GetADGroup
答案 0 :(得分:1)
您不能以这种方式将字符串定义通过管道传递给已过滤的Commandlet。首先声明变量。
完成此操作后,请根据需要进行过滤,然后选择所需的属性(Description
属性是必需的,因为Name
属性是默认情况下,Commandlet不会返回该属性)。
$us = Read-Host 'Enter Your User Group Name:'
Get-ADGroup -filter "Name -like '*$us*'" -Properties Description | Select-Object Name , Description | Sort-Object Name
答案 1 :(得分:0)
问题是$ US直到管道结束才设置,因此为空。
尝试:
$us = Read-Host 'Enter Your User Group Name:' | # get the name
%{"*$($_)*"} | # Add the asterisk wildcard.
%{Get-ADGroup -filter {name -like $_}} | # read from AD
Select Name |
Sort Name
这将要求您提供组名,然后将结果保存到管道(而不是$ us)中。管道值用于添加星号,然后再次将该值输出到管道,然后将该管道用于Get-Adgroups命令。
一旦返回了查询结果,它就会被清理,并简化为名称,然后进行排序,以按排序顺序列出名称列表。
不需要“ -Properties Description,info”,因为您只需要名称,那么为什么要请求描述或信息字段?
我刚刚对此进行了测试,尽管Ansgar Wiechers说了什么,但这确实可行。如果这个答案有帮助,请投票。