read-host to variable with spaces not working

I am trying to read-host text with spaces and save it into a variable in powershell.

However when the variable is passed as an argument to another command then it ignore the space.

$Name = read-host “enter text here”
enter text here: hello world

ec2-create-tags %1 -t “Name=%2” -t “Server=%3”

In the above command it puts Name= Hello and Server= World

I would like to store Name= Hello World

I am not sure if there is any formatting error? I tried the backtick " backtick " option but it didn’t work either.

Any help would be appreciated.



Why don’t you just use “Name=$Name” if that’s what you want? I guess I’m confused why you’re using the % tokens.

Thanks for the response Dan. When I use “Name=$Name” then I get the return value also as Name=$Name

I am using %tokens because the ec2-create-tags command is called from a batch file by another powershell script that reads the user inputs with read-host variables.

To be more specific this is the command that I am calling from a powershell script


And I use tokens as variables from my powershell script.
“c:\bin\nameInstanceTagVal.cmd $instanceID $instanceName $Owner $Purpose”

this is the command that I am running from the batch file
ec2-create-tags %1 -t “Name=%2” -t “Owner=%6” -t “Purpose=%7”

Do you have any other ideas?

Under “Any help would be appreciated” … get batch files completely out of the mix. You are creating unnecessary complications. Unless there is a TRULY compelling reason, it should be all PowerShell.

Thanks for the response Bob. The reason for using the batch file is because the batch file is also setting up the environment variables for java.

ec2-create-tags is a command that is run via SOAP call using java and my powershell script is calling other batch files which uses the SOAP calls.

You can also set environment variables in Powershell and just do everything in Powershell which would reduce the complexity a lot.

if you use powershell only for read-host…

… not use powershell at all and use “set /p cmd” command

Thanks for the response Megamorf. I did exactly that by moving the code from batch files into the powershell script to eliminate the complexity. Also, I used the syntax in powershell as described in the command’s help that I was trying to execute.

If you’re using the command line tools on a Windows system, you might need to use quotation marks (for example, “key=value”). If you’re using Windows Powershell, you might need to use a second set of quotation marks, escaped with backticks (for example, “`"key=value`”").

Thanks for all your help.