在Powershell中将字符串转换为数字
converting string to number in powershell
我正在尝试将字符串转换为小数点后两位的值
我有一个脚本,其中有一行代码是
(get-mailboxdatabase xxx -status).databasesize
这个returns大小差不多
1.008 GB(1,082,195,968 字节)
我希望能够将其转换为数字 (1.008),但不知道该怎么做。
我知道 ToGB(),但只有当 运行从 EMS 获取脚本时才有效。
我需要能够 运行 Powershell 中的脚本,而不是 EMS,因为脚本会做其他事情。
如何将值转换为数字?
TIA
安迪
如果您正在使用隐式远程处理(听起来像您在使用),那将是一个 [字符串],因此您需要使用字符串方法。
'1.008 GB (1,082,195,968 bytes)' -replace '^([0-9.]+).+',''
1.008
试试这个:
$val= (get-mailboxdatabase xxx -status).databasesize
[decimal]([regex]::Match( $val, '(^.+)GB' )).groups[1].value
这个很简单,做一个cast,除以1GB就可以了。
PS C:\> [int]"1082195968"/1GB
1,00787353515625
或者你的情况
([int](get-mailboxdatabase xxx -status).databasesize)/1GB
您可以使用标准 .NET 框架类型和转换将数字转换为各种数字类型。例如:
> $var = [decimal]::Parse("1.008")
> $var.GetType().Name
Decimal
仅从输入中提取字符串的那部分是一个单独的问题,很难从您的问题中判断出是哪部分给您带来了麻烦。要仅获取数字,您可以使用如下内容:
$input = (get-mailboxdatabase xxx -status).databasesize
$strSize = $input.Split(' ')[0]
或者您可以使用正则表达式。这完全取决于您的尺码的可变性。
我正在尝试将字符串转换为小数点后两位的值
我有一个脚本,其中有一行代码是
(get-mailboxdatabase xxx -status).databasesize
这个returns大小差不多 1.008 GB(1,082,195,968 字节)
我希望能够将其转换为数字 (1.008),但不知道该怎么做。
我知道 ToGB(),但只有当 运行从 EMS 获取脚本时才有效。
我需要能够 运行 Powershell 中的脚本,而不是 EMS,因为脚本会做其他事情。
如何将值转换为数字?
TIA
安迪
如果您正在使用隐式远程处理(听起来像您在使用),那将是一个 [字符串],因此您需要使用字符串方法。
'1.008 GB (1,082,195,968 bytes)' -replace '^([0-9.]+).+',''
1.008
试试这个:
$val= (get-mailboxdatabase xxx -status).databasesize
[decimal]([regex]::Match( $val, '(^.+)GB' )).groups[1].value
这个很简单,做一个cast,除以1GB就可以了。
PS C:\> [int]"1082195968"/1GB
1,00787353515625
或者你的情况
([int](get-mailboxdatabase xxx -status).databasesize)/1GB
您可以使用标准 .NET 框架类型和转换将数字转换为各种数字类型。例如:
> $var = [decimal]::Parse("1.008")
> $var.GetType().Name
Decimal
仅从输入中提取字符串的那部分是一个单独的问题,很难从您的问题中判断出是哪部分给您带来了麻烦。要仅获取数字,您可以使用如下内容:
$input = (get-mailboxdatabase xxx -status).databasesize
$strSize = $input.Split(' ')[0]
或者您可以使用正则表达式。这完全取决于您的尺码的可变性。