我正在尝试根据文件夹中有多少个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的业余爱好者/学员不知道如何表达问题,否则可以将此问题视为重复。我对这个问题的解释让我得到了几十页回答其他问题,而不是我的。
答案 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})