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

时间:2019-06-07 20:43:47

标签: powershell csv

现在,我将一个大的.CSV文件导入到powershell中,并且当前仅将所有数据放入一个变量中。我的问题是如何做到这一点,所以我将每一列拆分为一个不同的变量?

我正在尝试为此使用ForEach-Object,但是我在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 个答案:

答案 0 :(得分:1)

您可以单独访问这些列,而无需将其放在专用变量中。 这是csv:

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

将其插入选择对象将返回psobjects数组。

($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

答案 1 :(得分:0)

如果我猜对了,应该这样做:

class EmptyData: BindableObject {
    let didChange = PassthroughSubject<EmptyData, Never>()
}

struct RandomViewGrandParent : View {
    var body: some View {
        RandomViewParent().environmentObject(EmptyData())
    }
}

struct RandomViewParent : View {
    @EnvironmentObject var emptyData: EmptyData
    @EnvironmentObject var emptyData2: EmptyData

    var body: some View {
        RandomView()
    }
}

struct RandomView : View {
    @EnvironmentObject var emptyData: EmptyData
    @EnvironmentObject var emptyData2: EmptyData

    var body: some View {
        Text("Hello World!")
    }
}

这将返回两列:

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

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

其中“名称”包含存在的版本号。