Преобразование байтов в мегабайты на лету - PullRequest
1 голос
/ 28 октября 2019

В приведенной ниже команде PS я получаю имя, creationTimeStamp, Disk_Size и storageBytes вчерашних снимков в моем проекте gcp и выводю данные в файл csv (который позже конвертируется в HTML и отправляется по электронной почте):

$csv = gcloud --project $gcpProject compute snapshots list --format="csv(name,creationTimestamp,diskSizeGb,storageBytes)" --filter="creationTimestamp.date('%Y-%m-%d')=$yesterday" | Out-File C:\data.csv

Результат выглядит примерно так (количество отображаемых снимков меняется):

+---------------------------+-------------------------------+--------------+---------------+
|               NAME        |       CREATION_TIMESTAMP      | DISK_SIZE_GB | STORAGE_BYTES |
+---------------------------+-------------------------------+--------------+---------------+
| snapshot1-us-central1     | 2019-10-24T19:24:09.061-07:00 | 50           | 1250586048    |
| snapshot2-data-us-east1   | 2019-10-24T19:01:49.791-07:00 | 150          | 425018600     |
+---------------------------+-------------------------------+--------------+---------------+

Это хорошо, за исключением того, что все данные STORAGE_BYTES представлены в байтах, что затрудняет их чтение. Как я могу записать эти данные в МБ вместо этого в CSV-файл (или просто заменить эти данные в CSV-файле, который в байтах на МБ)

Ответы [ 2 ]

1 голос
/ 29 октября 2019
$data=Get-Content C:\data.csv
$NewData=@($data[0..2])#Adding Header in a new Variable
$Data[3..$($data.Count - 2)]|Foreach{
$startRange=$_.LastIndexOf("| ")+1
$length=$_.LastIndexOf("  |") - $_.LastIndexOf("| ")
#Converting Bytes into MB and replacing in the line
$NewData+=$_.Replace(($_.Substring($startRange,$length)).Trim(),"$([math]::Round(($_.Substring($startRange,$length)/1MB),2))   ")
}
#Adding last line
$NewData+=$data[$data.Count - 1]
#Modifying exsiting file
$NewData |Set-Content C:\data.csv -Force
0 голосов
/ 28 октября 2019

Я думаю, это должно быть просто с помощью командлетов GCP PowerShell.

Get-GceSnapshot -Project $gcpProject

Я никогда не использовал его, но вы можете использовать вычисленные свойства для преобразования размера в oneline, пример ниже

Get-Process | Select-Object -First 3 -Property Name,@{E={$_.STORAGE_BYTES/1024};L='Size'}

PS: при условии, что имя свойства размера равно STORAGE_BYTES

https://googlecloudplatform.github.io/google-cloud-powershell/#/google-compute-engine/GceSnapshot/Get-GceSnapshot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...