Powershell ArrayList将单个数组项转换回字符串

时间:2017-11-16 23:59:36

标签: powershell arraylist

我有一个powershell脚本,它根据给定目录中文件夹的名称生成一个ArrayList。因此,如果目录如下所示:

C:\目录\一

C:\目录\二

C:\目录\三

$ list是一个包含[One,Two,Three]的数组。该行如下:

[System.Collections.ArrayList]$list = (Get-ChildItem C:\Directory -dir).Name

然后我可以遍历字符串数组并用它们做各种事情。但是,当目录中只有一个文件夹时,这将停止工作。它似乎不再是一个ArrayList而只是一个字符串。我收到以下错误:

Cannot convert the "Directory" value of type "System.String" to type "System.Collections.ArrayList"

这里可以做些什么?我应该使用不同类型的数组吗?

2 个答案:

答案 0 :(得分:5)

您需要将输出强制为数组。

@((Get-ChildItem C:\Directory -dir).Name)

答案 1 :(得分:0)

如果要使用ArrayList,构造函数只需要一个Array或另一个ArrayList。你可以建立@DanielMann所说的并做这样的事情:

New-Item -Path C:\TestDirectory\SubDirectory -Force | Out-Null # Creates one folder in C:\TestDirectory
[System.Collections.ArrayList] $ArrayList = @((Get-ChildItem C:\TestDirectory -Directory).Name)
Write-Host "Total directories: $($ArrayList.Count)"
Remove-Item -Path C:\TestDirectory -Recurse

如您所见,我只是将(Get-ChildItem).Name的输出包装在数组@()中。