Как выполнить математику в powershell или, если быть более точным, из файла .CSV - PullRequest
0 голосов
/ 07 февраля 2019

Итак, я пытаюсь получить значения моего жесткого диска в CSV с помощью одной из следующих функций:

Эта:

Get-PSDrive -PSProvider FileSystem | select Used,Free,Name,Root | Export-CSV -path "C:\Temp\Output $env:computername\Harddisk $env:computername.csv" -delim ";" -Encoding UTF8

Или эта:

Get-PSDrive -PSProvider FileSystem | Format-Table -AutoSize | Out-String -Width 10000| Out-File -Append "C:\Temp\Output $env:computername\Harddisk2 $env:computername.csv" -Encoding UTF8}

Вывод метода 1 в байтах, поэтому мне придется выполнить на нем математические вычисления (делится на 1073741824, чтобы получить правильный ответ), но не знаю как.

Выводметод 2 указан в гигабайтах (что я хочу), но выводит его только в 1 столбец.

Может кто-нибудь сказать, как мне нужно выполнить математику на первом или как поставить -delimiter ";" на втором?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Это то, что вам нужно использовать, если вы хотите иметь столбец «Всего», кроме столбцов «Использовано» и «Свободно».

Get-PSDrive -PSProvider filesystem | select Name, Root, @{n="Used in GB";e={"{0:N2}" -f  ($_.used/1GB)}},   @{n="Free in GB";e={"{0:N2}" -f ($_.Free/1GB)}}, @{n= 'Total in GB' ; e = {"{0:N2}" -f (($_.used + $_.Free)/1GB)}} | Export-CSV -path "C:\Temp\Output $env:computername\Harddisk $env:computername 2.csv" -Delimiter ";" -NoTypeInformation
0 голосов
/ 07 февраля 2019

Вот решение для вашего номера 1.

Get-PSDrive -PSProvider FileSystem | select Name, Root, @{n="Used in GB";e={[math]::Round($_.Used/1GB,2)}}, @{n="Free in GB";e={[math]::Round($_.Free/1GB,2)}} | Export-CSV -path "C:\Temp\test1.csv" -Delimiter ";" -NoTypeInformation
...