Powershell计算未返回值

Powershell计算未返回值,powershell,Powershell,嗨,我正在尝试通过foreach循环来处理csv文件,没有什么太复杂的事情(或者我是这么认为的),但是我无法得到正确的值 当我用下面的值(以MB为单位)输入csv时,我想转换成gb,显示gb的逗号 CSV db110 DB21200 db3 50 DB4900 我得到的价值观是 db10 DB21 DB30 db40 我的剧本是 Import Csv“c:\temp\sql.Csv”| ForEach对象{ $db=$\u.Name $size=$\尺寸 $newsize=$size/100

嗨,我正在尝试通过foreach循环来处理csv文件,没有什么太复杂的事情(或者我是这么认为的),但是我无法得到正确的值

当我用下面的值(以MB为单位)输入csv时,我想转换成gb,显示gb的逗号

CSV

db110
DB21200
db3 50
DB4900
我得到的价值观是

db10
DB21
DB30
db40
我的剧本是

Import Csv“c:\temp\sql.Csv”| ForEach对象{
$db=$\u.Name
$size=$\尺寸
$newsize=$size/1000
写入主机“数据库$db是$newsize gb”|输出文件“C:\temp\sql.txt”-追加
}

提前感谢

您有打字问题
$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
}

你有打字问题
$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
}

我非常惊讶你能从代码中得到什么。[grin]我从来都无法让
写主机
向管道发送任何东西。使用
addcontent
…尝试更标准的方法来构建字符串并将其发送到输出文件。。。除了屏幕输出外,不要使用
写主机
。。。这就是
-Host
部分的含义。[grin]@AdminOfThings仍然使用“$newsize=[double]”($size/1000)返回相同的值。我还尝试使用
[math]::Round($newsize,2)
将小数点转换为两个空格,但没有joy@Thomas谢谢,这真是一种享受,请加上它作为回答:)@Lee_Dailey我注意到你[咧嘴笑]。@RoadRunner-我天生脾气暴躁,脾气暴躁,所以我试着用积极的情绪来应对。。。而且我也很难看到,所以我拼出表情符号,而不是使用较短的版本。[咧嘴笑]我非常惊讶你能从代码中得到什么。[grin]我从来都无法让
写主机
向管道发送任何东西。使用
addcontent
…尝试更标准的方法来构建字符串并将其发送到输出文件。。。除了屏幕输出外,不要使用
写主机
。。。这就是
-Host
部分的含义。[grin]@AdminOfThings仍然使用“$newsize=[double]”($size/1000)返回相同的值。我还尝试使用
[math]::Round($newsize,2)
将小数点转换为两个空格,但没有joy@Thomas谢谢,这真是一种享受,请加上它作为回答:)@Lee_Dailey我注意到你[咧嘴笑]。@RoadRunner-我天生脾气暴躁,脾气暴躁,所以我试着用积极的情绪来应对。。。而且我也很难看到,所以我拼出表情符号,而不是使用较短的版本。[咧嘴笑]