本帖最后由 Nsqs 于 2023-9-10 03:16 编辑
将下面代码定义好- function rnd{
- param(
- [Parameter(ValueFromPipeline,Position=2,ParameterSetName='A')]
- $InputObject,
- [Parameter(ParameterSetName='B',Position=1)]
- $Min,
- [Parameter(ParameterSetName='B',Position=0)]
- $Max,
- [Parameter(ParameterSetName='A',Position=3)]
- $Count=1
- )
- if($PSBoundParameters.ContainsKey('InputObject')){
- $input|Get-Random -Count $Count
- }else{
- Get-Random -Minimum $Min -Maximum $Max
- }
- }
复制代码 按如下进行测试- 1,3,5,7|rnd 4
-
- 1,3,5,7|Get-Random 4
-
- rnd -Max 10 -Count 5
-
- Get-Random -Maximum 10 -Count 5
复制代码 效果与原函数如出一辙,就连输入参数不显示count都一样
rnd : 无法将输入对象绑定到命令的任何参数,可能是因为该命令没有采用管道输入,或者输入及其属性与采用管道输入的任何参数均不匹配。
Get-Random : 无法将输入对象绑定到命令的任何参数,可能是因为该命令没有采用管道输入,或者输入及其属性与采用管道输入的任何参数均不匹配。
-------------------------------------------------
rnd : 无法使用指定的命名参数解析参数集。
Get-Random : 无法使用指定的命名参数解析参数集。
-------------------------------------------------
重点测试,发现有个有趣的现象,就连下面这样写报错都一样复制代码 rnd : 无法将输入对象绑定到命令的任何参数,可能是因为该命令没有采用管道输入,或者输入及其属性与采用管道输入的任何参数均不匹配。
3
复制代码 Get-Random : 无法将输入对象绑定到命令的任何参数,可能是因为该命令没有采用管道输入,或者输入及其属性与采用管道输入的任何参数均不匹配。
2
|