Comment dois-je faire une chaîne de caractères de remplacement dans une fonction PowerShell?
Comment puis-je convertir fonction des paramètres d'entrée pour le bon type?
Je veux retourner une chaîne qui a une partie de l'URL passée en retirer.
Cela fonctionne, mais il utilise une chaîne codée en dur:
function CleanUrl($input)
{
$x = "http://google.com".Replace("http://", "")
return $x
}
$SiteName = CleanUrl($HostHeader)
echo $SiteName
D'échec:
function CleanUrl($input)
{
$x = $input.Replace("http://", "")
return $x
}
Method invocation failed because [System.Array+SZArrayEnumerator] doesn't contain a method named 'Replace'.
At M:\PowerShell\test.ps1:13 char:21
+ $x = $input.Replace( <<<< "http://", "")
OriginalL'auteur Brian Lyttle | 2008-08-18
Vous devez vous connecter pour publier un commentaire.
Le concept ici est correcte.
Le problème est avec le nom de la variable que vous avez choisi. $input est réservé variable utilisée par PowerShell pour représenter un tableau de pipeline d'entrée. Si vous changez de nom de variable, vous ne devriez avoir aucun problème.
PowerShell n'ont un remplacement de l'opérateur, de sorte que vous pourriez faire de votre fonction en
OriginalL'auteur Steven Murawski
De Steve et la réponse de travaux. Le problème avec votre tentative de reproduire ESV du script, c'est que vous êtes en utilisant
$input
, qui est réservé variable (il recueille automatiquement plusieurs canalisations d'entrée en une seule variable).Vous devriez, cependant, utiliser .Replace (), sauf si vous avez besoin de la fonctionnalité supplémentaire(s) de le remplacer (il gère les expressions régulières, etc).
Cela fonctionnera, mais ce serait:
Aussi, lorsque vous appelez une fonction PowerShell, ne pas utiliser de parenthèses:
Espère que ça aide. Par ailleurs, pour démontrer $input:
OriginalL'auteur Jaykul
OriginalL'auteur ESV
Cela a fonctionné pour moi:
OriginalL'auteur EBGreen