PowerShell 技能连载 - 使用神奇的脚本块参数
在前一个例子中我们演示了 Rename-Item
中 NewName
的神奇功能。它可以接受一个新的文件名,也可以接受一个脚本块。脚本块可以用来批量命名大量文件。
我们现在来看看 PowerShell 函数如何实现这种神奇的参数!以下是一个定义了两个参数的函数:
1 | function Test-MagicFunc |
您可以把它当作一个传统的独立函数运行:
1 | PS> Test-MagicFunc -Par1 100 -Par2 50 |
您也可以通过管道输出来运行它,并且传入一个固定的第二参数:
1 | PS> 1..4 | Test-MagicFunc -Par2 99 |
但是您也可以对的第二个参数传入一个脚本块,该脚本块引用了从管道收到的对象:
1 | PS> 1..4 | Test-MagicFunc -Par2 { $_ * $_ } |
事实证明,这个魔法十分简单:Par2
的参数定义显示它可以接受管道输入。它不关心是由属性名输入 (ValueFromPipelineByPropertyName) 还是通过值输入 (ValueFromPipeline)。在这些例子中,当您将一个脚本块传给参数时,PowerShell 将该脚本块当作管道输入值的接口:$_
引用输入的对象,脚本块可以使用任何需要的代码来计算需要绑定到参数的值。
PowerShell 技能连载 - 使用神奇的脚本块参数
http://blog.vichamp.com/2018/05/31/using-magic-script-block-parameters/