当前位置: 首页 > 知识库问答 >
问题:

将CSV文件中的列组织到Powershell中的不同变量中

宰父疏珂
2023-03-14

现在我正在进口一个大的。CSV文件到PowerShell中,目前只是将所有数据放入一个变量中。我的问题是如何将每列分割成不同的变量?

我正尝试使用ForEach对象来实现此目的,但我对Powershell还是比较陌生,需要一些帮助。

现行代码

$file1 = Import-Csv -Path C:\Users\lin\Documents\EndpointScript.csv | select 'System Name', 'Product Version'| where 'Product Version' -eq '5.4.6.220'
$file2 = Import-Csv -Path C:\Users\lin\Documents\EndpointScript.csv | select 'Product Version'| where 'Product Version' -ne '5.4.6.220'
Write-Output $file1
"Up to Date: "; $file1.Count
"Out of Date: "; $file2.Count
"Todays Date: "; Get-Date -Format g

$file1 | export-csv C:\Users\lin\Documents\AgentReport.csv -NoTypeInformation

试图做这样的事


$objectArray = Import-Csv -Path C:\Users\tlines\Documents\EndpointScript.csv
$file1 | ForEach-Object {
Attemping to do something like this

我希望每一列数据都位于不同的变量中,这样就可以更容易地使用其中一列进行操作。

共有2个答案

经慈
2023-03-14

如果我猜对了,这应该可以:

$objectArray = Import-Csv -Path C:\Users\tlines\Documents\EndpointScript.csv

$objectArray | Group-Object 'Product Version' -NoElement 

这将返回两列:

Count Name
----- ----

其中Name包含当前的版本号。

黄浩涆
2023-03-14

您可以单独访问这些列,而无需将它们放在专用变量中。

column1;column2;column3
1a;2a;3a
1b;2b;3b
1c;2c;3c

现在导入它,并通过使用点符号或管道来选择对象来分别访问列:

$csv = Import-Csv -Path .\test.csv -Delimiter ";"

Write-Output "pipe to select-object to only retrieve a single property"
$csv | select column1 

Write-Output "access the properties with dot notation"
$csv.column1

通过管道将选择对象返回psobject数组。

($csv | select column3 -first 1).GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    PSCustomObject                           System.Object

点表示法将为您提供一个字符串数组。

$csv.column3[0].GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object
 类似资料:
  • 嗨,我正在寻找一个最快的解决方案来处理csv文件的负载。 情况:我在一个文件夹中有多个csv文件,它们的标题不同 我已经对它们进行了预处理,以删除顶部的垃圾行,因此所有这些都有一个标准标头。 我想将一组CSV文件与完全相同的侦听器合并到一个新文件夹中 示例文件-1。csv 示例文件-2。csv 样本文件-3。csv 样本文件-4。csv 样本文件-5。csv 样品File-6.csv 样本文件-7

  • 我如何从"CSV示例"创建一个像"最终结果"这样的数组? 背景 我正在构建一个用于测试的实验室文件系统,我想创建一个看起来有点像真实文件系统的文件夹结构。我有几个包含文件夹信息的CSV文件。 我想采用上面的每个组合,创建一个包含以下所有文件夹的文件系统。 一旦我有了上面所有完整路径的数组,就像做一样简单: 问题 我希望能够为任何CSV文件做到这一点,不管我有多少列,头名称是什么,或者每列有多少值。

  • 位置vcenter用户名密码abc 10.1 X xxx def 10.2 Y yyy 一个csv文件,其位置列是一个位置,该位置的IP列表示vCenter IP 我需要生成所有主机详细信息,并添加位置字段作为最终csv中的第一个字段,但无法这样做 实例 假设位置abc有一个带有5台主机的vcenter,位置def有一个带有3台主机的vcenter 输出shd看起来像 位置名称版本abc h1 6

  • 我想读一个csv文件在2列,当我将打开我的excel,它将显示我的csv文件的信息显示在2列。 实际上,我只在一列中显示以下代码: 所以现在我想做这件事,但在两个专栏中,我是PowerShell的初学者,所以我想感谢一些帮助:)谢谢 这是我的CSV文件: 我只想在excel的两列上同时显示这些信息(资产编号和序列号),不用担心这些信息一点都不敏感,所以可以:)

  • 我正在powershell中编写一个小脚本,希望以特定格式构建一个变量。 当我打印该值时,该值显示为- 我希望输出是- 在这种情况下,如何将变量值放在“”(双引号)内。