2013-04-23 65 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