Потому что вы говорите, что вы новичок в PowerShell.Мой ответ немного подробнее о том, как вы пишете PowerShell.
PowerShell - это язык сценариев, он используется не программистами-разработчиками, такими как администраторы.Вы - разработчик C # со всеми своими знаниями, но вы можете написать то, что хотите написать, проще.В PowerShell существует синтаксис для использования списков и Hastables, попробуйте следующее:
$a = @()
$a += "Bonjour"
$a += "Salut"
$a
$a | get-member
Get-Member -InputObject $a
$rwc = @{}
$rwc += @{1="Blues"}
$rwc += @{2="Blacks"}
$rwc
$rwc | get-member
Get-Member -InputObject $rwc
Вот три функции, выполняющие одно и то же, я знаю, что строители строк немного эффективнее в памяти, но в этомзаботы.
Function MyStringFunc([String]$line)
{
$r = New-Object -TypeName "System.Collections.Generic.List``1[[System.String]]";
$sb = New-Object -TypeName "System.Text.StringBuilder";
foreach ($c in [Char[]]$line)
{
$a = $sb.Append($c);
$r.Add($sb.ToString());
}
return $r;
}
# A more simple way
Function MoreReadableStringFunction([String]$line)
{
$r = @() # an untyped list
foreach ($c in [Char[]]$line)
{
$a += $c;
$r += $a;
}
return $r;
}
# More simple but not so readable
Function MoreSimpleStringFunction([String]$line)
{
$r = @() # an untyped list
[Char[]]$line | % {$a += $_; $r += $a}
return $r;
}
Clear-Host
$line1 = "123";
$t1 = MyStringFunc $line1;
$t1
$t2 = MoreReadableStringFunction $line1
$t2
$t3 = MoreSimpleStringFunction $line1
$t3