powershell - 使用 PowerShell 将数据正确导入数组

标签 powershell

我正在尝试组合一个 PowerShell 脚本,该脚本将从 CSV 读取数据(它实际上是制表符分隔而不是 CSV 但对于 SO,我们将使用逗号)并将该数据导入到 PowerShell 多维数组中。我的 CSV 有以下数据:

EmpID,Name,Dept
12345,John,Service
56789,Sarah,Sales
98765,Chris,Director

我的脚本如下:
$temp=gc "temp.csv"
$array=@()

$temp | Foreach{
    $elements=$_.split(",")
    $array+= ,@($elements[0],$elements[1],$elements[2])
}

foreach($value in $array)
{
    write-host "EmpID =" $value[0] "and Name =" $value[1] "and Dept =" $value[2]
}

上面的工作,但我希望能够通过更合适的名称来引用数组元素,因为元素比上面显示的要多得多,这会让人感到困惑。为此,我尝试使用哈希表,定义新对象、成员、类型等,但它们似乎永远无法正常工作。我可能是错的,但我觉得我在绕圈子跑,现在我可能迷路了。基本上,我想做的是,而不是使用:
write-host "EmpID =" $value[0] "and Name =" $value[1] "and Dept =" $value[2]

我想用这样的东西替换上面的内容:
write-host "EmpID =" $value.EmpID "and Name =" $value.Name "and Dept =" $value.Dept

这可能吗?如果是这样,有人可以指出我正确的方向吗? CSV 来自另一个来源,无论如何都带有标题行(除非手动编辑 CSV,否则无法将其删除)。所以我想使用标题行来命名数组列,但我不必使用它。我的主要问题(目标)是至少能够命名不同的列。它可以通过使用从 CSV 导入的第一行或通过将名称输入脚本本身来动态完成。

谢谢

最佳答案

你工作太辛苦了。默认情况下,导入 CSV 将使用逗号分隔,您可以使用 -Delimiter 处理制表符分隔。从那里您可以按名称引用列。

Import-CSV "temp.csv" | Write-Host "EmpID=" + $_.EmpID

关于powershell - 使用 PowerShell 将数据正确导入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24004302/

相关文章:

powershell - 创建 CSV 可导出对象数组时如何控制列名位置?

session - $env :Username work in PowerShell? 如何

windows - 在 Windows 上查找当前事件语言

powershell - 发布 Web App 添加任务所需的代理配置

运行远程批处理文件时 Powershell 进程 'hanging'

PowerShell 和 = 在 & 调用参数中

json - 将简单的 curl 数据请求转换为 powershell invoke-webrequest

json - 无法为嵌套属性添加值

azure - 如何解决 "DNS Zone does not have enough labels via PowerShell"错误

powershell - 如何将函数输出传递给powershell中的另一个函数?