I\'ve written some pwsh code
\"a:b;c:d;e:f\".Split(\";\") | ForEach-Object { $_.Split(\":\") }
# => @(a, b, c, d,
You can alternatively create also a stack or a queue. Below, I created with your array a stack.
$array = "a:b;c:d;e:f".Split(";")
$stack = New-Object -TypeName System.Collections.Stack
$array | ForEach-Object { $stack.Push($_.Split(":")) }
From here, the most used methods are .Push() to insert new items to your stack, .Peek() to use the first item of the stack and .Pop(), to retrieve and then remove the first item.
You mentioned that you wanted to create an array. This is also possible by using the ToArray() method.
$stackArray = $stack.ToArray()
$stackArray[2]
> a
> b
To keep in mind, creating a stack will inverse the order to the items.