【问题标题】:Alias a Property Name In Powershell 3Powershell 3中的属性名称别名
【发布时间】:2013-04-24 02:44:10
【问题描述】:

使用下面的例子:

Get-Service | ConvertTo-HTML -Property Name, Status > C:\services.htm

我想知道是否可以给属性名称起别名——就像在 SQL 中一样:

例子:

Get-Service | ConvertTo-HTML -Property Name AS NEWNAME , Status AS MYNEWSTATUSNAME> C:\services.htm

我知道上面的语法行不通...为属性名称起别名的正确方法是什么?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    使用 select-object 怎么样?

    get-service | select-object -property @{N='MyNewStatus';E={$_.Status}}, @{N='MyNewName';E={$_.Name}} | ConvertTo-HTML > C:\services.htm
    

    【讨论】:

    • 这是一个有用的答案,但对实际提出的问题的更好答案是下面@mjolinor 给出的答案:Add-Member -MemberType AliasProperty code dir | % {$_ |添加成员 -MemberType AliasProperty -Name 'lw' -Value 'LastWriteTime' -PassThru} |排序 lw
    • 这样的别名对于将时间传递到 New-Timespan select @{N='LastWriteTime';E={$_.LastSeen}} | New-TimeSpan | Select Days 非常有用
    【解决方案2】:

    给属性名取别名的方法是给对象添加一个 AliasPropery。

    Get-Service | 
    foreach {
    $_ | Add-Member -MemberType AliasProperty -Name MYNEWSTATUSNAME -Value Status -PassThru
    } |
    Select Name,MYNEWSTATUSNAME
    

    【讨论】:

    • 这实际上是对所提问题的最佳答案。它不会“更改”对象“或需要长时间选择才能获取所有其他属性。此解决方案只是添加别名,并且 Add-Memor -AliasProperty 在 PowerShell 2.0 中可用(我们中的一些人有数千服务器,其中一些除了 PowerShell 2.0 之外没有任何东西)
    • 漂亮!但除非我遗漏了什么,否则foreach 循环是多余的:Get-Service | Add-Member ... 应该可以工作。
    【解决方案3】:

    您可以使用new-object cmdlet 执行创建具有所需属性名称的对象的中间步骤。

    Get-Service | foreach{ new-object PSObject -property @{newname=($_.Name); newstatus=($_.Status)}} | ConvertTo-Html > .\services.htm
    

    【讨论】:

    • 这也有效 - 并且值得承认 - 接受上述答案,但是无需中间步骤即可实现相同的输出。
    • @DudeSolutions 我同意迈克的回答更优雅(因此更好),但他的回答也涉及中间步骤。事实上,你可以说它是同一个,因为他的解决方案在引擎盖下做了同样的事情。虽然我同意摆脱 foreach 是可取的。
    • 这是一个有用的答案,但对实际提出的问题的更好答案是下面@mjolinor 给出的答案:Add-Member -MemberType AliasProperty code dir | % {$_ |添加成员 -MemberType AliasProperty -Name 'lw' -Value 'LastWriteTime' -PassThru} |排序 lw
    猜你喜欢
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2012-06-06
    • 2023-03-26
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多