我有一个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"
这里可以做些什么?我应该使用不同类型的数组吗?
答案 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
的输出包装在数组@()
中。