I have a file like this:
line one email1
line two email1
line three email2
line four email1
If I want to extract only the lines that contain "email1", I do this:
$text = Get-Content -Path $path | Where-Object { $_ -like *email1* }
$text is now an array with 3 elements containing those lines, and I iterate through it like this:
for ($i = 0; $i -lt $text.Length; $i++)
{
#do stuff here
}
However, if I want to get the lines containing "email2".
$text = Get-Content -Path $path | Where-Object { $_ -like *email2* }
returns a string, rather than an array of one element. And when I iterate through it, it iterates through each char in the string.
How can I make it an array with one element rather than a string?
In order to get an array always, even with 1 (i.e. not string) or 0 (i.e. not $null
) items, use the operator @()
:
$text = @(Get-Content -Path $path | Where-Object { $_ -like *email1* })
Worked it out.
I need to declare $text as type [String[]]
.
[String[]]$logText = Get-Content -Path $path | Where-Object { $_ -like *email1* }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With