Powershell -从CSV创建多维数组

7hiiyaii  于 2023-03-27  发布在  Shell
关注(0)|答案(1)|浏览(129)
$deviceImport = Import-Csv ".\ValidatedData.csv"

for($i=0; $i -lt $deviceImport.Length; $i++){
    $Devices[$i][0] += $_.id;
    $Devices[$i][1] += $_.name;
}

下面是当前传入的CSV文件的示例
Id,Type,Name,SpaceId,SpaceName,NetworkSwitchName,NetworkSwitchPortID,ExternalID,SerialNumber 126,NetworkNode,10E-601,,,,,,00000100 -0001-3A15-0370-B23C28A0569F,816,NetworkNode,10E-602,,,,,,,,00000100 - 0001-0000-0000-5012003A0038,1072,NetworkNode,10E-603,,,,,00000100 -0001-0000-0000-500E002E004E,358,NetworkNode,10E-604,,,,,00000100 -0001-03AC-179B-DCC22680568E,538,NetworkNode,10E-605,,,,,0000100 -0001-F74E-08A7-5864E16056AA,1782,NetworkNode,10E-606,,,,,,,00000100 -0001-1B0C-427A-985C47405665,399,NetworkNode,10E-607,,,,,,,,,00000100 -0001-FB3F-B1F0-F95824B0E06A,305,NetworkNode,10E-608,,,,,,,,,,,,0000100 -0001-F7FF-825A-C6497C40567F,227,NetworkNode,10E-609,,,,,,,00000100 -0001-3218-AECE-7BE4DDE05697,422,NetworkNode,10E-610,,,,,,,,00000100 -0001-526F-E1B1-56E1DB90E068,4087,NetworkNode,10E-611,,,,,,,,,,,,00000100 -0001-F9CE-5438-19D5FCA0E80B,250,NetworkNode,10E-612,,,,,,00000100 -0001-647B-2794-0FB79920568A,191,NetworkNode,10E-613,,,,,,,,,,,00000100 -0001-277E-7457-93DBE6105689,808,NetworkNode,10E-614,,,,,00000100-0001-0000-0000-510400520029,
我有麻烦传递到一个锯齿状数组,我试图通过每一行作为一个单独的数组,我可以创建一个对象,并执行命令对这只是一个小的部分,这规模高达20,000行。

bvpmtnay

bvpmtnay1#

$_是一个“自动变量”,表示管道中的当前项:
关于自动变量|$_
与$PSitem相同。包含管道对象中的当前对象。您可以在对管道中的每个对象执行操作的命令中使用此变量。
请注意,foreach( ... ) { ... } * 不是 * 管道,因此$_ * 不 * 包含值-您可能希望引用$deviceImport变量。
另外,还不清楚为什么要使用+=而不是=,我猜您需要=
总而言之,你的代码应该是:

for( $i=0; $i -lt $deviceImport.Length; $i++ )
{
    $Devices[$i][0] = $deviceImport.id;
    $Devices[$i][1] = $deviceImport.name;
}

最后,有点吹毛求疵,但您的$Devices变量不是multidimensional array-它是jagged array(基本上是single-dimensional array,其中每个索引本身包含另一个一维数组)。

相关问题