$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行。
1条答案
按热度按时间bvpmtnay1#
$_
是一个“自动变量”,表示管道中的当前项:关于自动变量|$_
与$PSitem相同。包含管道对象中的当前对象。您可以在对管道中的每个对象执行操作的命令中使用此变量。
请注意,
foreach( ... ) { ... }
* 不是 * 管道,因此$_
* 不 * 包含值-您可能希望引用$deviceImport
变量。另外,还不清楚为什么要使用
+=
而不是=
,我猜您需要=
。总而言之,你的代码应该是:
最后,有点吹毛求疵,但您的
$Devices
变量不是multidimensional array-它是jagged array(基本上是single-dimensional array,其中每个索引本身包含另一个一维数组)。