![Powershell:评估以字符串表示的数学表达式](https://linux22.com/image/1620752/Powershell%EF%BC%9A%E8%AF%84%E4%BC%B0%E4%BB%A5%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A1%A8%E7%A4%BA%E7%9A%84%E6%95%B0%E5%AD%A6%E8%A1%A8%E8%BE%BE%E5%BC%8F.png)
在 PowerShell 中,如何评估以字符串形式存储的数学表达式?如何让 PowerShell 评估以下内容:
C:\> $a="30000/1001"
C:\> $a
30000/1000
C:\>
期望输出:
C:\> $a="30000/1001"
C:\> <some command>
29.97002997003
C:\>
在 Linux 中我可以执行以下操作(基本上就是我想在 PowerShell 中完成的操作):
user@computer:/path# a="30000/1001"
user@computer:/path# echo "scale=5; $a" | bc
29.97002
答案1
使用Invoke-Expression
。或者直接调用一个新的 shell(当然速度要慢得多)
$a="30000/1001"
Invoke-Expression $a
powershell -Com $a
答案2
使用 Invoke-Expression 通常不建议;我建议使用更安全的方法System.Data.DataTable
:
$a="30000/1001"
[Data.DataTable]::New().Compute($a, $null)
# Result = 29.97002997003