Author Posts

January 1, 2012 at 12:00 am

by veroli at 2013-02-11 04:08:48

Hello,

am having trouble splitting an array into multiple arrays
I have a text file with server names that is split into sections these sections are defined like an INI file
for example

[server group 1]
server1
server2
server3
[server group 2]
server8
server9
server10
[server group 3]
server13
server14
server15

I want to read this file in and then split these sections into three seperate arrays so i can use them
Its probably a really easy question but I can't seem to split them how i want after reading in from get-content.
Should i split based on the [] and use a wildcard between them or is there a better way of handling this.
thanks

Dan

by coderaven at 2013-02-11 07:48:09

Someone may be better at this, but I think putting the data in a hash table would be best. Take the following as an example.

$FileName = \\path\to\File.txt
$Key = "Server Group X"
$ResultContent = @{}

$ArrContent = Get-Content -Path $FileName

foreach ($Line in $ArrContent)
{
$HeaderFound = $False
If ($Line.StartsWith("[") { $Key = $Line; $HeaderFound = $True }
if (!$HeaderFound) {$ResultContent.Add($Key, $Line)}
}

It may be a little long for something so simple but it should work.

by mjolinor at 2013-02-11 20:33:29

If you really want variables:
[code2=powershell]get-content serverlist.txt |
foreach {
if ($_ -match '\[.+\]')
{
$var = $_.trim('[]').replace(' ','_')
New-Variable $var
}
else {set-variable -Name $var -value ((Get-Variable -Name $var).value += @($_))}
}

get-variable server_*[/code2]

Name Value
—- —–
server_group_1 {server1, server2, server3}
server_group_2 {server8, server9, server10}
server_group_3 {server13, server14, server15}

by veroli at 2013-02-12 00:54:55

thanks guys i will work from this much appreciated,
i am also looking to see if it is more viable in an xml file might be easier to split it