2013-04-23 38 views
17

使用下面的例子:别名属性名在PowerShell中3

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 

我知道上述语法不起作用...什么是别名属性名称的正确方法?

回答

23

如何使用select-object?

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

太神奇了!我知道我错过了管了。谢谢你的一个内胆,同伴忍者! – FredTheWebGuy 2013-04-23 21:45:07

+1

这是一个有用的答案,但更好的答案该竟是问的问题是一个由下面给出@mjolinor:加入会员-MemberType AliasProperty 'code' 目录|%{$ _ |加入会员-MemberType AliasProperty杂牌“LW” - 值“LastWriteTime” -PassThru} |排序LW – HerbM 2017-03-30 14:31:25

+0

别名这样是配管用次进入新-时间跨度'选择@ {N ='超级有用LastWrit eTime'; E = {$ _。LastSeen}} | New-TimeSpan |选择天数 – Phlebass 2017-05-11 11:00:52

4

你可以做创建与要使用new-object cmdlet的属性名称对象的中间步骤。

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

这个方法也是值得肯定的 - 接受了上面的答案,但是,为了在没有中间步骤的情况下实现相同的输出。 – FredTheWebGuy 2013-04-23 21:52:07

+0

@DudeSolutions我同意Mike的答案更优雅(因此更好),但他的回答也涉及到一个中间步骤。事实上,你可以认为它是同一个,因为他的解决方案在底层做了同样的事情。虽然我同意摆脱这种习俗是可取的。 – zdan 2013-04-24 04:24:05

+0

注意!您的解决方案是一个非常密切的第二... – FredTheWebGuy 2013-04-24 06:57:56

7

别名属性名称的方法是将AliasPropery添加到对象。

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

这实际上是被问到的问题的最佳答案。它没有“变”对象”,或需要什么可能是一个漫长的选择让所有的其他属性。 这种解决方案只是增加了别名,添加-MEMOR -AliasProperty在PowerShell 2.0中可用 (我们中的一些拥有数千台服务器,他们中的一些没有什么比PowerShell 2.0中) – HerbM 2017-03-30 14:27:27