2013-04-23 14 views
17

Na przykładzie poniżej:Alias ​​nazwy właściwości PowerShell 3

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

Zastanawiałem się, czy możliwe jest alias nazwę właściwości - w ten sam sposób, co mogłeś w SQL:

Przykład:

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

Wiem, że powyższa składnia nie działałaby ... Jaki jest poprawny sposób na alias nazwy właściwości?

Odpowiedz

23

Co powiesz na używanie obiektu-wybierz?

+0

Niesamowite! Wiedziałem, że brakuje mi fajki, dziękuję ci za jednego liniowca, kolegę ninja! – FredTheWebGuy

+1

To przydatna odpowiedź, ale lepsza odpowiedź na pytanie, które zostało RZECZYWIŚCIE, zadane przez @mjolinor poniżej: Add-Member -MemberType AliasProperty 'code' dir |% {$ _ | Add-Member -MemberType AliasProperty -Name 'lw' -Wartość 'LastWriteTime' -PassThru} | sort lw – HerbM

+0

Aliasing w ten sposób jest bardzo przydatny dla czasów orurowania w czasie New-Timespan 'select @ {N = 'LastWrit eTime "; E = {$ _. LastSeen}} | New-TimeSpan | Wybierz dni " – Phlebass

4

Możesz wykonać pośredni krok tworzenia obiektów o nazwach właściwości, które chcesz, używając cmdletu new-object.

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

To również działa i jest warte uznania - zaakceptował powyższą odpowiedź, aby uzyskać ten sam wynik bez pośredniego kroku. – FredTheWebGuy

+0

@DudeSolutions Zgadzam się Odpowiedź Mike'a jest bardziej elegancka (a przez to lepsza), ale jego odpowiedź obejmuje również etap pośredni. W rzeczywistości można twierdzić, że jest taki sam, ponieważ jego rozwiązanie robi to samo pod maską. Chociaż zgodziłbym się, aby lepiej było zrezygnować z foreach. – zdan

+0

Noted! Twoje rozwiązanie było bardzo bliskie drugie ... – FredTheWebGuy

7

Sposób na alias nazwy właściwości polega na dodaniu AliasPropery do obiektu.

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

To jest właściwie najlepsza odpowiedź na zadane pytanie. Nie "zmienia" obiektu "lub wymaga długiego wyboru, aby uzyskać WSZYSTKIE inne właściwości." To rozwiązanie po prostu dodaje alias, a Add-Memor -AliasProperty był dostępny w PowerShell 2.0 (Niektórzy z nas mieć tysiące serwerów, niektóre z nich nie mają nic więcej niż PowerShell 2.0) – HerbM

Powiązane problemy