2017-04-19 66 views
0
$Service = Get-Service -ComputerName SYNESIGNSVR -Name SynAutoImportService 
$ServiceDName = $Service.DisplayName 
$ServiceStat = $Service.Status 

Add-Content "c:\temp\logtemp - Services Status.log" "$(Get-Date -Format 
"yyyy-MM-dd HH:mm:ss") - $ServiceDName service on server SYNESIGNSVR current 
status: $ServiceStat" 

我正在寫一個PS腳本,將創建一個日誌文件與幾個不同的服務和他們的幾個不同的Windows服務器的當前狀態。上面的代碼工作和回報:PowerShell添加內容與獲取服務

2017年4月19日12時01分17秒 - 在服務器上SYNESIGNSVR當前狀態協同文檔AUTOIMPORT服務:運行

這似乎是草率的代碼,我的方式已經拉取得服務,並使狀態和顯示名稱拉入。

我正在尋找方法,我可以使此代碼更清潔,或更有效。

+0

沒有什麼錯與您的代碼。 –

+0

同意,Ansgar。我在PowerShell方面有點新,並且正在尋找優化/編寫乾淨代碼的方法。此代碼確實會返回我想要和需要的內容。 –

+0

我的意思是說你的代碼很好。你可以用不同的方式得到相同的結果(例如參見TessellatingHeckler的答案),但我不會認爲比其他方法更「清潔」或「更高效」,至少在你的問題的背景下。 –

回答

3

什麼:

$Computer = 'SYNESIGNSVR' 
$Service = Get-Service -ComputerName $Computer -Name SynAutoImportService 

$LogLine = "{0} - {1} service on server {2} current status: {3}" -f [DateTime]::Now, 
                    $Service.DisplayName, 
                    $Computer, 
                    $Service.Status 

Add-Content -Path "C:\temp\logtemp - Services Status.log" -Value $LogLine 
+0

如果經常使用它,我會認爲將它們包裝到一個函數中,並將'Computer''ServiceName''logFile'作爲參數,保持不變。 –

+0

在變量例如腳本的頂部,'Path'參數的值也會更好。 $ outputPath – pandemic

+0

與logline模板相同。 –