Comment valider PowerShell les Paramètres de la Fonction permettant de chaînes vides?
Veuillez essayer ceci:
function f1
{
param(
[Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)]
[string]
$Text
)
$text
}
function f2
{
param(
[Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)]
#[string]
$Text
)
$text
}
function f3
{
param(
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[string]
$Text
)
$text
}
f1 ''
f2 ''
f3 ''
Ici f1 renvoie une erreur. Maintenant, essayez
f2 $null
f3 $null
Cette fois seulement f2 renvoie une erreur. Ce que je veux, c'est une fonction f, de sorte que
f '' # is accepted
f $null # returns an error
- +1 pour la bonne cause.
- Désolé, je ne comprends pas, votre fonction " f2 " fonctionne comme vous le souhaitez. f2 " est accepté et f2 $null générer une erreur.
- Je pense que le problème est bien sur le type de données.
Vous devez vous connecter pour publier un commentaire.
Les attributs Obligatoires blocs nulle et vide de valeurs et vous invite à entrer une valeur.
Pour permettre à des valeurs vides (y compris null) ajouter le AllowEmptyString attribut de paramètre:
Voici la solution qui s'adapte aux exigences avec une mise en garde.
De sortie:
Mise en garde
Afin de s'adapter aux exigences que nous avons à omettre le type explicite déclaration de
[string]
. Le problème est que PowerShell tend à convertir les valeurs null pour les cordes à vide partout où la[string]
type est spécifié. Ainsi, si nous utilisons le type de déclaration de valeur null en fait ne vient jamais à la fonction.P. S. Voici une question à soumettre:
Il n'est pas possible de passer la valeur null comme valeur null dans une .NET méthode qui a un paramètre de type Chaîne de caractères
function f2
. Donc, ce n'est pas tout à fait une vraie réponse, peut-être 🙂Juste par souci d'exhaustivité, si vous voulez que votre entrée soit validé à l'encontre de type chaîne de caractères, vous pouvez le faire par la suite les paramètres de déclaration:
Cette fonction se comporte comme suit:
$null