我正在学习PowerShell并且对参数绑定有疑问.这可能是一个简单的问题,但我很茫然.
如果我输入:
get-adcomputer -filter 'name -eq "serverone"' |
select @{name='computername';e={$_.name}} |
get-process
Run Code Online (Sandbox Code Playgroud)
这给了我一个关于"serverone"的进程列表,并且运行正常.但如果我输入:
get-adcomputer -filter 'name -eq "serverone"' |
select @{name='computername';e={$_.name}} |
get-service
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:
get-service : Cannot find any service with service name
'@{computername=SERVERONE}'. At line:1 char:93
+ ... e={$_.name}} | get-service
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (@{computername=SERVERONE}:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
Run Code Online (Sandbox Code Playgroud)
为什么是这样?双方Get-Process并Get-Service接受计算机名,以及该参数的帮助文件看起来相同.有趣的是,如果我键入相同的代码但添加-Name bits到Get-Service上面的命令,它会返回服务详细信息.所以它看起来像是Get-Service试图将对象绑定到服务名称,但是这种情况Get-Process在语法上看起来非常相似?