How do I replace spaces with %20 in PowerShell?

I'm creating a PowerShell script that will assemble an HTTP path from user input. The output has to convert any spaces in the user input to the product specific codes, "%2F".

Here's a sample of the source and the output:

The site URL can be a constant, though a variable would be a better approach for reuse, as used in the program is: /http:%2F%2SPServer/Projects/"

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

As output I need:

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

To replace " " with %20 and / with %2F and so on, do the following:

[uri]::EscapeDataString($SitePath)

The solution of @manojlds converts all odd characters in the supplied string. If you want to do escaping for URLs only, use

[uri]::EscapeUriString($SitePath)

This will leave, e.g., slashes (/) or equal signs (=) as they are.

Example:

# 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") 

The output transformation you need (spaces to %20, forward slashes to %2F) is called URL encoding. It replaces (escapes) characters that have a special meaning when part of a URL with their hex equivalent preceded by a % sign.

You can use .NET framework classes from within Powershell.

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

Encodes a URL string. These method overloads can be used to encode the entire URL, including query-string values.

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