Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nivel de gravedad: Advertencia
Descripción
Los conjuntos de parámetros deberían tener como máximo un parámetro marcado como ValueFromPipeline = true.
Esta regla identifica funciones en las que múltiples parámetros dentro del mismo conjunto de parámetros se ValueFromPipeline han establecido en true (ya sea explícita o implícitamente).
Cómo
Asegúrate de que solo un parámetro por conjunto de parámetros acepte entrada de pipeline por valor. Si necesitas múltiples parámetros para aceptar diferentes tipos de entrada de pipeline, usa conjuntos de parámetros separados.
Ejemplo
Incorrecto
function Process-Data {
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline)]
[string] $InputData,
[Parameter(ValueFromPipeline)]
[string] $ProcessingMode
)
process {
Write-Output "$ProcessingMode`: $InputData"
}
}
Corregir
function Process-Data {
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline)]
[string] $InputData,
[Parameter(Mandatory)]
[string] $ProcessingMode
)
process {
Write-Output "$ProcessingMode`: $InputData"
}
}
Supresión
Para suprimir esta regla para un conjunto de parámetros específico, se utiliza el SuppressMessage atributo con el nombre del conjunto de parámetros:
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"
}
}
Para el conjunto de parámetros por defecto, use 'default' como objetivo de supresión:
[Diagnostics.CodeAnalysis.SuppressMessage('PSUseSingleValueFromPipelineParameter', 'default')]
Notas
- Esta regla se aplica tanto a explícito
ValueFromPipeline = $truecomo implícitoValueFromPipeline(que es lo mismo que usar= $true) - Los parámetros con
ValueFromPipeline=$falseno se marcan por esta regla - La regla gestiona correctamente el conjunto de parámetros por defecto (
__AllParameterSets) y los conjuntos de parámetros nombrados - Diferentes conjuntos de parámetros pueden tener cada uno su propio parámetro sin
ValueFromPipelineactivar esta regla