Author Posts

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