2017-06-23 18 views
2

原諒PS noob問題。我正在努力通過自學PowerShell腳本。我終於得到了這個遠程命令語法更正。目標是在遠程服務器上查看服務運行時間。我爲此示例更改了服務器名稱和服務名稱。下面是一個命令 -如何爲服務啓動時間查詢選擇正確的輸出格式?

Invoke-Command -ComputerName server {New-TimeSpan -Start (Get-Process winlogon).StartTime} 

,而我得到這個樣本輸出 -

Days : 0 
Hours : 12 
Minutes : 49 
Seconds : 20 
Milliseconds : 850 
Ticks : 461608503901 
TotalDays : 0.534269101737268 
TotalHours : 12.8224584416944 
TotalMinutes : 769.347506501667 
TotalSeconds : 46160.8503901 
TotalMilliseconds : 46160850.3901 
PSComputerName : servername 

所有這些信息是好的,但太爲我的目的。我想要的只是日子,小時分鐘和PSComputername。我對寫這個輸出到一個文件不感興趣。我只想在更高的層次上提供細節。我需要添加到命令才能獲得所需的輸出?

我感謝您的關注 嗖

+0

'.. |選擇天,小時,分鐘,PSComputerName'?您的標題詢問了「適當的輸出格式」,但你還沒說是什麼格式,你認爲正確的... – TessellatingHeckler

+0

我想輸出類似於我上面的例子,但只有上述領域。當我用選擇選項的管道命令時,我得到的輸出水平線,而不是在這裏看到。我感謝你的迴應。 – Shoop61

回答

1

就像在評論中提到的,使用select通過使用此語法

指定要

Invoke-Command -ComputerName server ` 
{New-TimeSpan -Start (Get-Process winlogon).StartTime} ` 
| select Days, Hours, Minutes, PSComputerName 

你也可以做一個「選擇爲」其性質

select @{l='days';e='Days'}, @{l='hours';e='Hours'} 

它會爲你更改屬性名稱。例如「天」,現在是「天」

最後,您可以通過在變量和訪問特定的屬性存儲

$output = Invoke-Command -ComputerName server ` 
{New-TimeSpan -Start (Get-Process winlogon).StartTime} ` 
| select Days, Hours, Minutes, PSComputerName 

獲取屬性:

$output.Days

可以將此存儲在自定義對象也是如此,我只是沒有足夠的信息來說明你想要輸出。

+0

如上所述 - 當我用選擇選項的管道命令時,我得到的輸出是水平線,而不是我的例子。我將這些信息附加到發送出去的狀態日誌文件中。 爲我提供的輸出示例中的佈局是我想要的,但我只想提到的領域。 – Shoop61

+0

@ Shoop61如果你想垂直輸出'$ VAR =調用命令...'然後做'的foreach($在$變種行){回聲$行}'。那對你有用嗎? –

+0

當我嘗試時發生錯誤。我可能有語法錯誤。 $ var = Invoke-Command -ComputerName hostname {New-TimeSpan -Start(Get-Process winlogon).StartTime}選擇Days,Hours,Minutes,PSComputername $ foreach($ var中的$ row){echo $ row} – Shoop61

0

試試這個

Invoke-Command -ComputerName Servername {New-TimeSpan -Start (Get-Process 'Servicename').StartTime | select Days, Hours, Minutes, PSComputerName} 
+0

這確實回答了這個問題。 – Shoop61