Powershell “数字”;“范围内”;报告内容为;“不在范围内”;第一次尝试
我正在Powershell中编写一个脚本,允许管理员和我自己执行两个基本的Active Directory任务,而无需打开ADUC和拨弄菜单。我有数字1-4可以选择,允许的响应应该Powershell “数字”;“范围内”;报告内容为;“不在范围内”;第一次尝试,powershell,switch-statement,Powershell,Switch Statement,我正在Powershell中编写一个脚本,允许管理员和我自己执行两个基本的Active Directory任务,而无需打开ADUC和拨弄菜单。我有数字1-4可以选择,允许的响应应该小于1或大于/等于5(我也尝试过大于4) 接受回答“2”和“3”,脚本运行正常;但是,读取主机拒绝响应“1”和“4”请输入范围内的数字当在提示下再次输入它们时,它会正常工作: What would you like to do today? 1. Reset a user's password 2. Enable a
小于1
或大于/等于5
(我也尝试过大于4
)
接受回答“2”和“3”,脚本运行正常;但是,读取主机拒绝响应“1”和“4”请输入范围内的数字当在提示下再次输入它们时,它会正常工作:
What would you like to do today?
1. Reset a user's password
2. Enable a user account
3. Disable a user account
4. Unlock a user
Number: 4
Please enter a number within range.: 4
Who needs to be unlocked?:
我很困惑为什么相同的代码片段会拒绝,然后允许相同的响应。如果需要的话,我的代码的其余部分只是开关,谢谢您的任何输入
1
{}
2
{}
3
{}
4
{}
“[int]$Response=0
第一次响应始终为零。”
-PetSerAl
“PetSerAl表示,您的前两行是反向的。实际上可能只是[int]$Response=Read Host“Number”
。作为旁白,您应该看看哪些选项可以为您完成大部分工作。”
-Matt
在去掉下面这行代码后,代码工作得很好。我不确定这会如何影响输入,但它解决了这个问题。谢谢
更新代码:
$Response=读取主机“编号”
虽然($Response-lt 1-或$Response-ge 5)
为什么不在启动switch语句之前使用if限定符呢?这样,如果输入不正确,您可以循环返回,如果输入正确,则可以继续执行?[int]$Response=0
第一个响应始终为零。PetSerAl表示前两行是向后的。实际上可能只是[int]$Response=读取主机“编号”
。顺便说一句,你应该看看这项工作的大部分是由谁完成的。@Matt我以前从未见过选择,这太神奇了。
1
{}
2
{}
3
{}
4
{}