【问题标题】:Powershell - passing by property parameter using Get-ADComputerPowershell - 使用 Get-ADComputer 通过属性参数传递
【发布时间】:2013-06-14 20:39:02
【问题描述】:

我试图理解为什么会失败:

获取-ADcomputer -filter * |选择@{l="计算机名";e={$_.name}} |获取服务

返回的错误是'找不到服务名称'@{comptuername=SERVER1}'
使用时可以获取数据 |获取服务 *
但是我试图更好地理解为什么这个特定的命令不起作用。似乎不是输入字符串,而是将“计算机名”作为 ADcomputerobject 传递给 Get-service?

我希望 Get-service 从管道中按属性获取 Computername,并且由于 Get-Service 的 Name 属性不是强制性的,所以上面的命令应该可以工作吗?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    问题在于传入的对象绑定的是 Name 参数,而不是 ComputerName。尽管 ComputerName 通过属性名称接受传入对象,但 Name 参数也接受,但更重要的是,它通过值接受传入对象并且优先于属性,因此传入对象始终属于 Name 参数。

    在这种情况下,对象类型 ADcomputerobject 与此无关,因为您可以使用自定义对象进行复制。您还可以从错误消息中获得有关问题的提示(...with service name):

    PS> [pscustomobject]@{ComputerName='server1'} | gsv
    gsv : Cannot find any service with service name '@{ComputerName=server1}'.
    

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多