当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于参数绑定

作者:精品下载站 日期:2024-12-14 02:20:57 浏览:13 分类:玩电脑

关于参数绑定


简短描述

参数绑定是 PowerShell 用于确定正在使用哪个参数集并将值关联(绑定)到命令参数的过程。这些值可以来自命令行和管道。

详细描述

参数绑定过程从绑定命令行参数开始。

  1. 绑定命名参数

    在命令行上查找以破折号开头的未加引号的标记。如果标记以冒号结尾,则需要一个参数。如果没有冒号,请查看参数的类型并查看是否需要参数。如果需要值,则尝试将参数的类型转换为参数所需的类型,转换成功,绑定参数。

  2. 绑定位置参数

    如果有任何未使用的命令行参数,请查找采用位置参数的未绑定参数并尝试绑定它们。

绑定命令行参数后,PowerShell 尝试绑定任何管道输入。有两种方法可以从管道绑定值。接受管道输入的参数具有以下一个或两个属性:

  • ValueFromPipeline - 来自管道的值根据其类型绑定到参数。参数的类型必须与形参的类型匹配。
  • ValueFromPipelineByPropertyName - 来自管道的值根据其名称绑定到参数。管道中的对象必须具有与参数名称或其别名之一匹配的属性。属性的类型必须与参数的类型匹配或可转换。

PowerShell 尝试按以下顺序绑定管道输入:

  1. 尝试绑定 ValueFromPipeline 参数而不进行类型转换:

    通过类型精确匹配的值从管道进行绑定。如果命令有管道输入并且仍然有未绑定的参数,请尝试绑定到与类型完全匹配的参数。

  2. 尝试绑定 ValueFromPipelineByPropertyName 参数而不进行类型转换:

    如果未找到值匹配,则按完全匹配的名称从管道进行绑定。在输入对象上查找与参数名称或其别名之一匹配的属性。如果类型完全匹配,则绑定参数。

  3. 如果管道输入尚未绑定,请尝试使用类型转换来绑定 ValueFromPipeline 参数:

    尝试将管道输入转换为所需的类型。如果转换失败,则该参数未绑定。

  4. 如果管道输入尚未绑定,请尝试使用类型转换来绑定 ValueFromPipelineByPropertyName 参数:

    属性的名称必须与参数的名称或其别名之一匹配。如果输入类型不匹配,请尝试将输入转换为匹配类型。如果转换失败,则该参数未绑定。

可视化参数绑定

解决参数绑定问题可能具有挑战性。您可以使用 Trace-Command cmdlet 来可视化参数绑定过程。以下示例演示如何跟踪简单管道的参数绑定。

Trace-Command -PSHost -Name ParameterBinding -Expression {
    Get-Item *.txt | Remove-Item
}

输出显示了表达式中命令的参数绑定过程的每一步。输出可能很详细,但它可以帮助您理解为什么参数没有按预期绑定。有关完整示例,请参阅可视化参数绑定一文。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯