문제

나는 어떻게 변환하는 기능 입력 매개변수 유형?

내가 원하는 문자열을 반환이 있는 부분의 URL 을 전달되 그것으로 제거됩니다.

이 작품은,그러나 그것을 사용 하드 코딩된 문자열:

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

$SiteName = CleanUrl($HostHeader)
echo $SiteName

이것은 실패합니다.

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://", "")
도움이 되었습니까?

해결책

는 개념을 여기에 올바른 것입니다.

문제가 변수 이름과 함께 당신이 선택됩니다.$입력을 지는 데 사용되는 변수에 의해 PowerShell 을 대표하는 배열 파이프라인의 입력이 있습니다.을 변경하는 경우는 변수 이름,너는 어떤 문제입니다.

PowerShell 가 대체 연산자, 다,그래서 당신을 만들 수 있는 기능으로

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

다른 팁

스티브의 응답을 작동합니다.문제로를 재현해 ESV 의 스크립트가 사용하고 있는 $input, 예약된 변수(자동으로 수집하는 여러 개의 파이프의 입력으로 하나의 변수).

당신이해야한다,그러나 사용이다.대체()이 필요하지 않는 경우는 추가 기능(s)-교체(처리하는 정규 표현식,etc.).

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

는 일할 것이다,하지만 너무 것:

function CleanUrl([string]$url)
{
    $url -replace "http://",""
}

또한,호출할 때 PowerShell 기능을 사용하지 않는 괄호:

$HostHeader = "http://google.com"
$SiteName = CleanUrl $HostHeader
Write-Host $SiteName

는 희망 도움이 됩니다.여 방법을 보여줍$입력:

function CleanUrls
{
    $input -replace "http://",""
}

# Notice these are arrays ...
$HostHeaders = @("http://google.com","http://stackoverflow.com")
$SiteNames = $HostHeader | CleanUrls
Write-Output $SiteNames
function CleanUrl([string] $url)
{
    return $url.Replace("http://", "")
}

이것은 나를 위해 일했:

function CleanUrl($input)
{
    return $input.Replace("http://", "")
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top