Question: How do I convert function input parameters to the right type?

I want to return a string that has part of the URL passed into it removed.

**This works, but it uses a hard-coded string:**

```
function CleanUrl($input)
{
    $x = "http://google.com".Replace("http://", "")
    return $x
}

$SiteName = CleanUrl($HostHeader)
echo $SiteName

```

**This fails:**

```
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://", "")

```

Answer: 
The concept here is correct.

The problem is with the variable name you have chosen. $input is a reserved variable used by PowerShell to represent an array of pipeline input. If you change your variable name, you should not have any problem.

PowerShell does have [a replace operator](https://technet.microsoft.com/en-us/library/hh847759.aspx), so you could make your function into

```
function CleanUrl($url)
{
    return $url -replace 'http://'
}

```
```
function CleanUrl([string] $url)
{
    return $url.Replace("http://", "")
}

```