Расчет Powershell не возвращает значение - PullRequest
0 голосов
/ 06 апреля 2020

Привет, я пытаюсь сделать foreach l oop, чтобы работать через CSV-файл, ничего слишком сложного (или я так думал), однако я не могу вернуть правильные значения.

Когда я ввожу CSV со значениями ниже (которые указаны в МБ), я хочу преобразовать в ГБ, показывая запятую для ГБ.

CSV

DB1 10
DB2 1200
db3 50
db4 900

Полученные мной значения

DB1 0
DB2 1
db3 0
db4 0

У меня есть скрипт

Import-Csv "c:\temp\sql.csv" | ForEach-Object {
    $db = $_.Name
    $size = $_.Size

    $newsize = $size/1000

    Write-Host "database $db is $newsize gb"  | Out-File "C:\temp\sql.txt" -Append
}

Заранее спасибо

1 Ответ

2 голосов
/ 06 апреля 2020

У вас проблема с типом. $size имеет тип int и, следовательно, $size/1000 будет целочисленным делением. Вы можете привести переменную к double, чтобы вызвать деление с плавающей запятой:

Import-Csv "c:\temp\sql.csv" | ForEach-Object {
    $db = $_.Name
    $size = $_.Size

    $newsize = ([double]$size)/1KB

    "database $db is $([math]::Round($newsize,2)) GB" | Out-File "C:\temp\sql.txt" -Append
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...