我有以下代碼:使PowerShell的PARAMETERSET工作用的FileInfo和的FileInfo []
Function SCCE {
[CmdletBinding()]
Param(
[Parameter(Position=0, Mandatory=$True, ValueFromPipeLine=$True,ParameterSetName="Files")]
[System.IO.FileInfo[]]$sourceFiles,
[Parameter(Position=0, Mandatory=$True, ValueFromPipeLine=$True, ParameterSetName='File')]
[System.IO.FileInfo]$sourceFile
)
PROCESS {
Write-Host $PSCmdlet.ParameterSetName
}
}
我希望做這項工作指定的類型,而據我所知,這不,即使類型是確切的。
例如:
$file = (ls)[0]
$file.getType() #FileInfo
SCCE $file
SCCE:參數集不能使用指定的命名 參數來解決。在行:1個字符:1
+ SCCE $文件
+ ~~~~~~~~~~
+ CategoryInfo:InvalidArgument:(:) [SCCE],ParentContainsErrorRecordException
+ FullyQualifiedErrorId:AmbiguousParameterSet,SCCE
註釋掉sourceFiles參數似乎證明了這個問題,但我不明白爲什麼這是不明確的。這是第二個參數的完美搭配。
我該如何解決這個問題?
你有沒有試過指定默認的參數設置? – PetSerAl 2015-02-10 11:42:20
@PetSerAl H'm,no。這似乎工作,但。有沒有辦法解決核心問題(即Powershell正在尋找一個精確匹配的存在)? – soandos 2015-02-10 11:45:49
由於我從來沒有看到描述PowerShell的參數集分辨率的確切行爲的文檔,指定默認參數集是我能提供的最好的東西。 – PetSerAl 2015-02-11 00:23:17