数组元素类型因元素数量而异

时间:2017-03-11 00:01:07

标签: arrays powershell csv

我正在尝试根据文件夹中有多少个csv文件来填充数组。这是我目前的代码:

CD "\\domain\folder\file drop location"
$Array = Get-ChildItem -Filter *.csv | 
       Where-Object {-not $_.PsIsContainer} | 
       Foreach-Object {$_.Name}
$Array[0]

根据文件夹中的.csv文件数量,返回不同的值。如果只有1个csv,则$Array[0]返回文件名的第一个字符(我不想这样)。如果有多个csv文件,则返回整个文件名(我想要这个)。如何使数组接受单个文件作为1元素数组?

修改 除非您认为不了解PowerShell的业余爱好者/学员不知道如何表达问题,否则可以将此问题视为重复。我对这个问题的解释让我得到了几十页回答其他问题,而不是我的。

2 个答案:

答案 0 :(得分:2)

您可以在创建变量时将变量转换为数组,然后它将始终是一个数组,即使只有一个结果。

[array]$Array = Get-ChildItem -Filter *.csv | 
       Where-Object {-not $_.PsIsContainer} | 
       Foreach-Object {$_.Name}

答案 1 :(得分:2)

将结果类型强制为@( , ( command ) )

$Array = @(, (Get-ChildItem -Filter *.csv | 
       Where-Object {-not $_.PsIsContainer} | 
       Foreach-Object {$_.Name}))

即使找不到.csv文件,结果类型也是数组(但$Array.Count为0,因此$Array[0]会引发错误。)

将结果类型强制为数组, ( command )且找不到.csv个文件,然后$Array.Count为1,$Array[0]$nul

$Array = , (Get-ChildItem -Filter *.csv | 
       Where-Object {-not $_.PsIsContainer} | 
       Foreach-Object {$_.Name})