You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写PowerShell函数实现用户输入回显及带参验证函数调试

针对你的两个PowerShell需求,我整理了对应的解决方案:

1. 接收用户输入并回显的PowerShell函数

这个函数的核心是获取用户输入后直接回显,我写了两个版本供你选择:

基础版(固定提示文本)

function Get-UserEcho {
    [CmdletBinding()]
    param()

    # 提示用户输入内容
    $userInput = Read-Host "请输入要回显的内容"
    
    # 用加粗格式回显输入内容
    Write-Host "你输入的内容是:*$userInput*"
}

使用方式:直接在PowerShell中运行Get-UserEcho,按提示输入内容即可看到回显。

进阶版(支持自定义提示)

如果需要灵活修改提示文本,可以扩展成带参数的版本:

function Get-UserEcho {
    [CmdletBinding()]
    param(
        # 自定义提示文本,默认值为通用提示
        [string]$Prompt = "请输入要回显的内容"
    )

    $userInput = Read-Host $Prompt
    Write-Host "你输入的内容是:*$userInput*"
}

# 调用示例:自定义提示用户输入用户名
Get-UserEcho -Prompt "请输入你的用户名"

2. 完善Set-Version函数实现内联传参与验证回显

你提供的代码里Param块的第二个参数定义不完整,我帮你补全并实现了内联传参、基础验证和参数回显的需求(假设你需要一个Version核心参数,可根据实际需求调整):

function Set-Version {
    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium')]
    [Alias()]
    [OutputType([int])]
    Param (
        # 源目录路径:优先用TFS环境变量,不存在则 fallback 到C:\
        [Parameter(Mandatory=$false, Position=0)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({Test-Path $_ -PathType Container})] # 验证路径存在且为目录
        [string]$Path = if ($Env:BUILD_SOURCESDIRECTORY) { $Env:BUILD_SOURCESDIRECTORY } else { "C:\" },

        # 版本号:必填,验证格式为x.y.z(主版本.次版本.修订号)
        [Parameter(Mandatory=$true, Position=1)]
        [ValidateNotNullOrEmpty()]
        [ValidatePattern('^\d+\.\d+\.\d+$')]
        [string]$Version
    )

    # 验证通过后回显参数信息
    Write-Host "=== 已验证的参数信息 ==="
    Write-Host "源目录路径:*$Path*"
    Write-Host "目标版本号:*$Version*"

    # 支持-WhatIf/-Confirm预览操作(保留你原有的SupportsShouldProcess逻辑)
    if ($PSCmdlet.ShouldProcess($Path, "设置版本为$Version")) {
        # 这里可以添加实际的版本修改逻辑(比如修改配置文件、程序集版本等)
        Write-Host "正在[$Path]目录下应用版本$Version..."
    }

    # 返回成功状态码(符合OutputType[int]要求)
    return 0
}

关键优化说明:

  • 补全了Version参数定义,设置为必填并添加版本格式验证
  • 优化Path默认值逻辑:优先使用TFS构建环境变量,不存在时才用C:\
  • 给Path增加了路径有效性验证,避免传入无效目录
  • 保留了SupportsShouldProcess特性,支持-WhatIf预览操作、-Confirm确认操作

内联传参示例:

# 显式指定参数名传入
Set-Version -Path "D:\MyDotNetProject" -Version "3.0.1"

# 利用Position参数省略参数名,直接内联传入
Set-Version "D:\MyDotNetProject" "3.0.1"

# 用-WhatIf预览操作(不会实际执行修改)
Set-Version "D:\MyDotNetProject" "3.0.1" -WhatIf

如果你的Set-Version需要其他参数或逻辑调整,随时告诉我具体需求就行!

内容的提问来源于stack exchange,提问作者CodingLearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:24:01