ввод секундомера PowerShell - PullRequest
       0

ввод секундомера PowerShell

0 голосов
/ 02 ноября 2018

У меня есть простая проблема, но мне очень трудно ее решить.

Я хочу секундомер, когда я ставлю время в секундах и появляется следующий MessageBox. Он работает, когда я ввожу число (10, 50, 120), но не работает, когда я ставлю 60+5 или 60*2.

Как конвертировать 60*2 в 120 в PowerShell?

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

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Использование 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'
}
0 голосов
/ 02 ноября 2018

Вы можете попробовать Invoke-Expression $time, чтобы оценить такие выражения. Но имейте в виду, что все типы PowerShell-кода могут быть отправлены этим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...