小编PSh*_*bie的帖子

Get-Service参数绑定未按预期工作

我正在学习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-ProcessGet-Service接受计算机名,以及该参数的帮助文件看起来相同.有趣的是,如果我键入相同的代码但添加-Name bitsGet-Service上面的命令,它会返回服务详细信息.所以它看起来像是Get-Service试图将对象绑定到服务名称,但是这种情况Get-Process在语法上看起来非常相似?

powershell parameterbinding

4
推荐指数
1
解决办法
796
查看次数

标签 统计

parameterbinding ×1

powershell ×1