我有一个在我的Powershell脚本中调用时插入Y或N菜单的函数。它使用while循环来验证是否输入了Y或N值。一切正常,但每次发生错误时都会创建一个新行。我可以使用cls并重新显示所有内容,但这不是最理想的解决方案。相反,我想找到一种方法在同一行重新显示读取主机提示,同时清除以前输入的任何答案。这是我现有的代码:
# Begin function to display yes or no menu
function ynmenu {
$global:ans = $null
Write-Host -ForegroundColor Cyan "`n Y. [Yes]"
Write-Host -ForegroundColor Cyan "N. [No]`n"
While ($ans -ne "y" -and $ans -ne "n"){
$global:ans = Read-Host "Please select Y or N"
}
}
# End function ynmenu
我还有一些其他动态填充的菜单,可以利用这种方法。找到解决方案也可以解决这个问题。
答案 0 :(得分:1)
我认为没有任何简单的方法可以做到这一点。
但是对于是/否响应,只要您所在的范围(函数,脚本等)定义了属性$PSCmdlet.ShouldContinue($Query, $Caption)
,您就可以使用[CmdletBinding(SupportsShouldProcess=$true)]
。这在ISE和控制台主机中显示了适当的是/否提示,并避免了手动处理。