PowerShell:带do-while循环的函数输出无法存入变量
解决PowerShell函数返回值无法存入变量的问题
我来帮你搞定这个问题!你的AD-prompt函数现在没法把用户输入的值返回给变量,核心原因是函数没有输出最终的$in值——PowerShell函数默认会把所有未被捕获的输出作为返回值,但你现在只是把Read-Host的结果存到了$in里,却没把这个值“吐”出来。
修正方案
只需要在循环结束后,把$in的值输出即可(PowerShell里直接写变量名就会输出它的值,或者用return关键字,效果一致):
function AD-prompt($Text) { do { $in = Read-Host -Prompt "$Text" } while($in -eq "") $in # 这里输出变量值,作为函数的返回结果 }
为什么之前不行?
- 当你移除循环时,
Read-Host的输出直接成为函数的返回值,所以$type能拿到内容; - 加了
do-while循环后,Read-Host的结果被赋值给$in,这个操作没有产生输出,循环结束后函数也没有任何输出,自然返回空值,导致$type没有内容。
现在再调用$type = AD-prompt "Sample Text",输入内容后,$type就能正常存储你输入的值啦!
内容的提问来源于stack exchange,提问作者Flying Thunder
相关产品推荐
相关产品推荐

