簡體   English   中英

刪除Powershell生成的Out-File .txt中的空白行

[英]Remove blank lines in Out-File .txt generated with powershell

我正在使用.ps1-Powershell-Script,但遇到問題。

我有以下代碼:

$a=0
$b=0
$c=0
$freeRam=0
$strComputer = "localhost"
$date = get-date
$a=Get-WmiObject Win32_OperatingSystem -ComputerName $strComputer | fl *freePhysical* | Out-String
$b=Get-WmiObject Win32_OperatingSystem -ComputerName $strComputer | fl *totalvisiblememory* | Out-String
$c=Get-WmiObject win32_processor -ComputerName $strComputer | fl *LoadPercentage* | Out-String
$a = $a -replace '\D+(\d+)','$1'
$b = $b -replace '\D+(\d+)','$1'
$c = $c -replace '\D+(\d+)','$1'
$c = $c.Insert(1,",")
$freeRam=[math]::Round($a/$b*10000)/100 
$seperator="Es ist der " + $date + "; der verfuegbare Arbeitsspeicher betraegt: " + $freeRam + " % " + "und die Auslastung der CPU in % betraegt aktuell " + $c
$seperator | Out-File -append "D:\Logging\FreeRAM.txt"

此代碼使用Powershell生成一個.txt文件,用於查詢WmiObjects以獲取可用的物理內存和CPU的實際負載百分比。

它的工作方式與預期的一樣,但是會生成win32_processor LoadPercentage-Query空白鏈接。

我已經嘗試使用.Trim()進行文件輸出,例如$c=Get-WmiObject win32_processor -ComputerName $strComputer | fl *LoadPercentage* | Out-String.Trim() $c=Get-WmiObject win32_processor -ComputerName $strComputer | fl *LoadPercentage* | Out-String.Trim() $c=Get-WmiObject win32_processor -ComputerName $strComputer | fl *LoadPercentage* | Out-String.Trim()但不起作用。 我已經嘗試使用-NoNewLine來輸出文件,例如$seperator | Out-File -append "D:\\Logging\\FreeRAM.txt" -NoNewLine $seperator | Out-File -append "D:\\Logging\\FreeRAM.txt" -NoNewLine但不起作用。

我的輸出看起來像這樣:

Es ist der 03/04/2019 08:13:31; der verfuegbare Arbeitsspeicher betraegt: 71.86 % und die Auslastung der CPU in % betraegt aktuell 1,2




Es ist der 03/04/2019 08:13:35; der verfuegbare Arbeitsspeicher betraegt: 71.86 % und die Auslastung der CPU in % betraegt aktuell 1,0




Es ist der 03/04/2019 08:13:39; der verfuegbare Arbeitsspeicher betraegt: 71.86 % und die Auslastung der CPU in % betraegt aktuell 1,1




Es ist der 03/04/2019 08:14:00; der verfuegbare Arbeitsspeicher betraegt: 71.84 % und die Auslastung der CPU in % betraegt aktuell 1,0

我想要這樣:

Es ist der 03/04/2019 08:13:31; der verfuegbare Arbeitsspeicher betraegt: 71.86 % und die Auslastung der CPU in % betraegt aktuell 1,2
Es ist der 03/04/2019 08:13:35; der verfuegbare Arbeitsspeicher betraegt: 71.86 % und die Auslastung der CPU in % betraegt aktuell 1,0
Es ist der 03/04/2019 08:13:39; der verfuegbare Arbeitsspeicher betraegt: 71.86 % und die Auslastung der CPU in % betraegt aktuell 1,1
Es ist der 03/04/2019 08:14:00; der verfuegbare Arbeitsspeicher betraegt: 71.84 % und die Auslastung der CPU in % betraegt aktuell 1,0

[編輯-修改后的處理器負載百分比計算以考慮到處理器數量。]

我看到您有您的答案...但是您使用的代碼有些round回,似乎沒有必要。 所以我寫了一個比較直接的版本。 [ 咧嘴 ]

它能做什么 ...

  • 使用CIM cmdlet代替WMI cmdlet
    CIM比不贊成使用的WMI調用要快一些。
  • 僅調用*_OperatingSystem類一次
  • 直接獲取.LoadPercentage
  • CIM_ComputerSystem獲取.NumberOfProcessors
  • 通過求和的[可能]數組計算實際負載% .LoadPercentage項&通過分割.NumberOfProcesors
  • 避免插入多余多余行的Format-List調用
  • 使用-f字符串格式運算符來構建輸出字符串

我使用英語是因為我不確定您所用語言的措辭。 我想你能比我更好地翻譯回你的... ... [ 咧嘴笑 ]

$ComputerName = $env:COMPUTERNAME
$TimeStamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'

$CIM_OS = Get-CimInstance -ClassName CIM_OperatingSystem -ComputerName $ComputerName
$CIM_CS_ProcessorCount = (Get-CimInstance -ClassName CIM_ComputerSystem).NumberOfProcessors

$FreeRAM_Pct = [math]::Round($CIM_OS.FreePhysicalMemory / $CIM_OS.TotalVisibleMemorySize * 100, 2)
$ProcLoad_Pct = [math]::Round(((Get-CimInstance -ClassName CIM_Processor -ComputerName $ComputerName).
    LoadPercentage |
    Measure-Object -Sum).Sum / $CIM_CS_ProcessorCount, 2)

'Time stamp = {0}; Free RAM % = {1}; Processor load % = {2}' -f $TimeStamp, $FreeRAM_Pct, $ProcLoad_Pct

輸出...

Time stamp = 2019-03-06 06:18:04; Free RAM % = 43.61; Processor load % = 5

您的變量$ c似乎包含空的新行。 要快速修復,可以按以下方式添加修剪功能:

  $c = $c.Insert(1,",").trim()

試試這個構造:

$a=(Get-WmiObject Win32_OperatingSystem -ComputerName $strComputer | fl *freePhysical* | Out-String).Trim()

或最后一行:

$seperator.Trim() | Out-File -append "D:\Logging\FreeRAM.txt"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM