秒表PowerShell输入

时间:2018-11-02 10:38:11

标签: powershell

我有一个简单的问题,但是我很难解决它。

当我以秒为单位放置时间并出现下一个MessageBox时,我想要秒表。 输入数字(10、50、120)时可以使用,但是输入60+560*2时不能使用。

如何在PowerShell中将60*2转换为120

[int]$time = Read-host "Write a time"
Start-Sleep $time
[System.Windows.Forms.MessageBox]::Show("Tea!")

2 个答案:

答案 0 :(得分:1)

如果将Invoke-Expression仅限于数值计算,则可能是安全的。

Add-Type -AssemblyName System.Windows.Forms

$userentry = Read-Host -Prompt "Write a time"

if ($userentry -match '^[\d+\-\*/\(\) ]*$') {
    try {
        $time = Invoke-Expression -Command $userentry -ErrorAction Stop
        Start-Sleep $time
        [System.Windows.Forms.MessageBox]::Show('Teal')
    } catch {
        Write-Host 'ERROR: Invalid numeric expression'
    }
} else {
    Write-Host 'ERROR: Not a valid numeric expression'
}

答案 1 :(得分:0)

您可以尝试Invoke-Expression $time来评估这样的表达式。但是请注意,所有类型的PowerShell代码都可以通过此方式发送