2014-12-08 19 views
9

& PowerShell operatörünün oluşturduğu bir çıkışın her satırına zaman damgaları eklemek nasıl mümkün olabilir?Tek tek PowerShell ve çıkış hatlarına zaman damgaları nasıl eklenir?

Örnek:

PS H:\> $result = & ping 192.168.1.1 
PS H:\> echo $result 

Pinging 192.168.1.1 with 32 bytes of data: 
Reply from 192.168.1.1: bytes=32 time=104ms TTL=250 
Reply from 192.168.1.1: bytes=32 time=106ms TTL=250 
Reply from 192.168.1.1: bytes=32 time=102ms TTL=250 
Reply from 192.168.1.1: bytes=32 time=102ms TTL=250 
Ping statistics for 192.168.1.1: 
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
Approximate round trip times in milli-seconds: 
Minimum = 102ms, Maximum = 106ms, Average = 103ms 

İstenilen sonuç:

PS H:\> echo $result 

2014-12-08T14:45:48.8898125+00:00:Pinging 192.168.1.1 with 32 bytes of data: 
2014-12-08T14:45:48.8932661+00:00:Reply from 192.168.1.1: bytes=32 time=104ms TTL=250 
2014-12-08T14:45:48.9233451+00:00:Reply from 192.168.1.1: bytes=32 time=106ms TTL=250 
2014-12-08T14:45:48.9765438+00:00:Reply from 192.168.1.1: bytes=32 time=102ms TTL=250 
2014-12-08T14:45:49.0233105+00:00:Reply from 192.168.1.1: bytes=32 time=102ms TTL=250 
2014-12-08T14:45:49.0233201+00:00: 
2014-12-08T14:45:49.0238753+00:00:Ping statistics for 192.168.1.1: 
2014-12-08T14:45:49.0239210+00:00: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
2014-12-08T14:45:49.0233318+00:00:Approximate round trip times in milli-seconds: 
2014-12-08T14:45:49.0237209+00:00: Minimum = 102ms, Maximum = 106ms, Average = 103ms 

Ben PowerShell dizi katılmak/bölmek biliyorum ama & operatör tamamlar SONRA bu sadece olabilir. & işleci çalışırken çıkışlara zaman damgalarının eklendiği daha fazla gerçek zamanlı çözüm arıyorum. Bu arada

, zaman damgası kendisidir $($(Get-Date -Format o) + ":")

Bir filtresi kullanabilirsiniz

cevap

33

:

filter timestamp {"$(Get-Date -Format o): $_"} 
$result = & ping 192.168.1.1 | timestamp 

Örnek çıktı $result den:

2014-12-08T11:42:59.2827202-05:00: 
2014-12-08T11:42:59.2857205-05:00: Pinging 192.168.1.1 with 32 bytes of data: 
2014-12-08T11:43:03.1241043-05:00: Request timed out. 
2014-12-08T11:43:08.1236042-05:00: Request timed out. 
2014-12-08T11:43:13.1241042-05:00: Request timed out. 
2014-12-08T11:43:18.1246042-05:00: Request timed out. 
2014-12-08T11:43:18.1246042-05:00: 
2014-12-08T11:43:18.1246042-05:00: Ping statistics for 192.168.1.1: 
2014-12-08T11:43:18.1246042-05:00:  Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), 
+0

Sorum ilk çıkışına damgaları ekleme konusunda oldu Daha sonra onları (ya da dışarı) filtrelemek için değil. –

+2

Filtrenin işi budur. PowerShell filtresi, boru hattındaki girişi kabul eden ve boru hattından aldığı her nesne için bir kez çalıştırılan bir komut dosyası bloğudur. Fonksiyonel olarak sadece bir Proses bloğu ile bir fonksiyon ile aynıdır. Bu filtre, çalıştırılabilirliğinizden her satır çıkışına zaman damgasını ekler. – mjolinor

+0

Ahh, aslında, tam olarak tarif ettiğiniz gibi çalışır. Bir milyon teşekkürler - sorun çözüldü! –

3

Başlat-Transkript cmdlet'ini kullanabilirsiniz profilinizde özel bir istemi ile birlikte:

# Configure PS prompt to show date and time 
function prompt 
{ 
    $promptStringStart = "PS:" + (Get-Date -format MM/dd/yy` hh:mm:ss) 
    $promptStringEnd += ">" 
    Write-Host $promptStringStart -NoNewline -ForegroundColor Yellow 
    Write-Host $promptStringEnd -NoNewline -ForegroundColor Yellow 
    return " " 
} 

Bu, Windows 7 iş istasyonumda harika çalışıyor. Ancak, bazı yeni Server 2012 R2 kurulumlarında Start-Transcript biraz bozuk görünüyor. Bu, bunun bir parçası: https://support.microsoft.com/en-us/help/3014136/powershell-transcript-file-doesn-t-contain-the-correct-information-in-windows-server-2012-r2

... bu sorunu giderir, ancak sorunu yine de özel istemiyle gidermez.

Örneğin, ben konsolda da gördük:

PS:02/14/17 08:28:20> hostname 
server463 

Ve bu günlüğüne yazdığını şudur:

PS:02/14/17 08:28:20 
> 

PS>hostname 
server463 
+0

Teşekkür ederim, bu oldukça ilginç bir yaklaşım ve eminim ki bazı senaryolarda kullanışlıdır. Yukarıda mjolinor'un cevabına göre zaman damgası filtresi yaklaşımı ile uğraşıyorum. İhtiyaçlarıma daha iyi uyuyor. –