PowerShell如何将用户输入拼接为脚本路径并赋值给变量?
解决PowerShell脚本调用问题
你的代码问题点
- 变量赋值语法错误:
Set-Variable的正确写法不是set-variable test = "xxx",且你错误地把路径拼接逻辑写在了变量赋值语句里,没有正确接收用户输入内容。 - 管道使用不当:管道确实是将前一个命令的输出传递给后一个命令作为输入,但你当前的写法没有让
Set-Variable正确接收Read-Host的输出。 Invoke-Expression存在安全风险:直接执行字符串形式的命令容易被注入恶意代码,属于不推荐的写法。
正确实现代码
# 获取用户输入的不带.ps1后缀的脚本名称 $scriptName = Read-Host -Prompt "请输入要执行的脚本名称(不带.ps1后缀)" # 拼接成完整的脚本路径 $scriptPath = ".\$scriptName.ps1" # 调用执行目标脚本 & $scriptPath
当你输入test时,脚本会自动拼接成.\test.ps1并执行。
管道的正确用法补充
管道的作用确实是传递前一个命令的输出给后一个命令,如果你想用管道实现变量赋值,可以这么写:
Read-Host -Prompt "请输入脚本名称" | Set-Variable -Name scriptName $scriptPath = ".\$scriptName.ps1" & $scriptPath
这里Read-Host的输出通过管道传给Set-Variable的-Value参数(管道输入默认绑定该参数),完成变量赋值。
内容的提问来源于stack exchange,提问作者qua_k
相关产品推荐
相关产品推荐

