Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Уровень тяжести: Предупреждение
Описание
Наборы параметров должны иметь не более одного параметра, обозначенного как ValueFromPipeline = true.
Это правило определяет функции, для которых несколько параметров в одном наборе ValueFromPipeline параметров установлены ( true явно или неявно).
Как
Убедитесь, что только один параметр на набор параметров принимает входные данные конвейера по значениям. Если для принятия разных типов входов в конвейер нужны несколько параметров, используйте отдельные наборы параметров.
Пример
Неправильный
function Process-Data {
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline)]
[string] $InputData,
[Parameter(ValueFromPipeline)]
[string] $ProcessingMode
)
process {
Write-Output "$ProcessingMode`: $InputData"
}
}
Исправить
function Process-Data {
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline)]
[string] $InputData,
[Parameter(Mandatory)]
[string] $ProcessingMode
)
process {
Write-Output "$ProcessingMode`: $InputData"
}
}
Подавление
Чтобы исключить это правило для конкретного набора параметров, используйте SuppressMessage атрибут с именем набора параметров:
function Process-Data {
[Diagnostics.CodeAnalysis.SuppressMessage('PSUseSingleValueFromPipelineParameter', 'MyParameterSet')]
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline, ParameterSetName='MyParameterSet')]
[string] $InputData,
[Parameter(ValueFromPipeline, ParameterSetName='MyParameterSet')]
[string] $ProcessingMode
)
process {
Write-Output "$ProcessingMode`: $InputData"
}
}
Для стандартного параметра используйте 'default' в качестве цели подавления:
[Diagnostics.CodeAnalysis.SuppressMessage('PSUseSingleValueFromPipelineParameter', 'default')]
Примечания
- Это правило применимо как к явному
ValueFromPipeline = $true, так и к неявномуValueFromPipeline(что то же самое, что и при использовании= $true) - Параметры с
ValueFromPipeline=$falseне помечаются этим правилом - Правило корректно обрабатывает набор параметров по умолчанию (
__AllParameterSets) и именованные наборы параметров - Разные наборы параметров могут иметь свой отдельный
ValueFromPipelineпараметр без активации этого правила