programing

PowerShell에서 공간을 %20으로 바꾸려면 어떻게 해야 합니까?

abcjava 2023. 8. 24. 21:45
반응형

PowerShell에서 공간을 %20으로 바꾸려면 어떻게 해야 합니까?

사용자 입력에서 HTTP 경로를 구성하는 PowerShell 스크립트를 만들고 있습니다.출력은 사용자 입력의 공백을 제품별 코드 "%2F"로 변환해야 합니다.

다음은 소스와 출력의 샘플입니다.

사이트 URL은 상수가 될 수 있지만, 프로그램에서 사용되는 것처럼 변수가 재사용에 더 적합합니다. /http:%2F%2SPServer/Projects/"

$Company="Company"
$Product="Product"
$Project="The new project"
$SitePath="$SiteUrl/$Company/$Product/$Project"

출력으로 필요한 항목:

'/http:%2F%2FSPServer%2FProjects%2FCompany%2FProductF2FThe%2Fnew%2Fproject'

대체할 내용" "와 함께%20그리고./와 함께%2F다음을 수행합니다.

[uri]::EscapeDataString($SitePath)

@manojlds 솔루션은 제공된 문자열의 모든 홀수 문자를 변환합니다.URL에 대해서만 이스케이프를 수행하려면 다음을 사용합니다.

[uri]::EscapeUriString($SitePath)

슬래시(예: 슬래시)가 남습니다./) 또는 등호(=) 그대로입니다.

예:

# Returns http%3A%2F%2Ftest.com%3Ftest%3Dmy%20value
[uri]::EscapeDataString("http://test.com?test=my value")

# Returns http://test.com?test=my%20value
[uri]::EscapeUriString("http://test.com?test=my value") 

최신 운영 체제의 경우 명령이 변경됩니다.Server 2012 R2 및 Windows 10에서 이 문제가 발생했습니다.

[System.Net.WebUtility]다음과 같은 오류가 발생할 경우 사용해야 하는 항목입니다.[System.Web.HttpUtility]없습니다.

$Escaped = [System.Net.WebUtility]::UrlEncode($SitePath)

필요한 출력 변환(%20으로 공백, %2F로 슬래시 전달)을 URL 인코딩이라고 합니다.URL의 일부에 해당하는 16진수 문자가 % 기호 앞에 오는 경우 특별한 의미를 갖는 문자를 대체합니다.

사용할 수 있습니다.Powershell 내의 NET 프레임워크 클래스입니다.

[System.Web.HttpUtility]::UrlEncode($SitePath) 

URL 문자열을 인코딩합니다.이러한 메서드 오버로드를 사용하여 쿼리 문자열 값을 포함한 전체 URL을 인코딩할 수 있습니다.

http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx

언급URL : https://stackoverflow.com/questions/23548386/how-do-i-replace-spaces-with-20-in-powershell

반응형