PowerShell: Manipulate Strings (Bulk) in Text Files for further processing

Lately, I’ve prepared some PowerPoint slides for the scripting module of a course for ongoing system engineers. Now it’s time to share my work with the PowerShell community. The slides are about string manipulation. In this blog post we will deal with a text file of e-mail addresses. For furter processing, all content (domain names) of the right side of the @ are to be removed. The problem: The domain names are different.

So I decided to write a little script that does exactly what I need.

Starting point

Here is the text file with E-Mail addresses.


Now let’s move on manipulating the strings so that all domain names and @ will be removed and the output will be save in a new file.

The Code

Open PowerShell ISE. Copy the code below into your ISE session and change the path of the files in line 1 and 7.

$get=Get-Content C:\Temp\Mail.txt

foreach ($g in $get)
Add-Content C:\Temp\usernames.txt -Value $substring

The Result

After a few seconds the newly created output file will look like this:


Mission accomplished.

Hope that this was good template for your string manipulation duty.

Keep in mind that IndexOf and Substring are your best friends when it comes to string manipulation.

I am looking forward to ideas and suggestions in the comments.

Categories: PowerShell

Tagged as: ,

2 replies »

  1. Hi Patrick
    Like all the time with Posh, there are different ways to reach the goal.
    For my part I’m more familiar with the following :

    $Names = foreach ($item in $data)
    Cutting the string with split method on @, then gather only first part ([0]). Here I feed a var called $Names, but we also can build a PSCustomObject in the foreach loop, to add some other values.
    I.e. :
    $Names = foreach ($item in $data)
    Name = $item.split(“@”)[0]
    Domain = $item.split(“@”)[1]
    … and let’s go with the var $Names to later treatments.


    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.