How can I configure a read-host statement in powershell to accept input that contains spaces

Hello Powershell Experts,

I'm working on a script that will update some AD information for users.  I identify the user that for which the script will run with a read-host statement.  The read-host statement is currently configured as:

read-host "Input the username"

I would input nickd (as our usernames are firstname + first initial of the last name") and everything works fine.

I want to change the read-host statement to:
read-host "Input the first and last name"

How can I do this?  The space between the firstname and the lastname are causing issues.

Thanks in advance.
Nick
LVL 1
ndalmolin_13Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
LearnctxConnect With a Mentor EngineerCommented:
You can use a regular expression or split the string to try do what you want to achieve. I prefer RegEx so I'll do that.

read-host "Input the username" | ForEach-Object {$_ -replace "(?<=^[a-z'-]+)\s|(?<=\s[a-z])[\w\W]+$"}

Open in new window

Should be able to handle names like:

John Smith
Martin Luther King
Martin Luther King, Jr.
John Wayne-Smith
John O'Hara
0
 
QlemoBatchelor, Developer and EE Topic AdvisorCommented:
In which way is that an issue? The whole input is considered to be a single string.
Do you need to split it into first and last name? Without any check, -split is the simplest way to do so:
$first, $last = (read-host "Input the first and last name") -split " "

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.