我有一个简单的问题,但是我很难解决它。
当我以秒为单位放置时间并出现下一个MessageBox时,我想要秒表。
输入数字(10、50、120)时可以使用,但是输入60+5
或60*2
时不能使用。
如何在PowerShell中将60*2
转换为120
?
[int]$time = Read-host "Write a time"
Start-Sleep $time
[System.Windows.Forms.MessageBox]::Show("Tea!")
答案 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代码都可以通过此方式发送