实例化空csv变量

时间:2016-03-15 19:32:23

标签: powershell powershell-v3.0

我使用方法从不同的csv文件中选择记录,我想知道如何创建一个像csv文件一样的空变量。例如......

空数组为$ ack-spinach 'I have an empty array'

空哈希表为$array = @()

非空csv对象为$hashTable = @{}

一个空的csv对象是$csvFileRecords = Import-Csv $someFileName

语法是什么?

2 个答案:

答案 0 :(得分:2)

A" CSV对象"实际上只是一个数组(psobject s)。

$csvFileRecords = @()

要向该数组添加新记录,只需添加psobject s,其中包含与所需列对应的适当属性。创建具有所需属性的psobject的一种方法是使用哈希表。

$obj = new-object psobject -property @{fname="Fiddle";lname="Freak"}
$csvFileRecords += $obj

答案 1 :(得分:1)

嗯,CSV不能从$ null创建,但你可以这样做:

PS C:\> New-Object -TypeName System.Object | ConvertTo-Csv
#TYPE System.Object

但你的挑战是,这不会来回运作。例如:

PS U:\> ((New-Object -TypeName System.Int32 ) | ConvertTo-Csv).GetType()
IsPublic IsSerial Name                                     BaseType                                                                                   
-------- -------- ----                                     --------   
True     True     String                                   System.Object    

表示ConvertTo-CSV的输出不为空,但这显示您丢失管道的位置:

PS U:\> ((New-Object -TypeName System.Int32 ) | ConvertTo-Csv | ConvertFrom-csv).GetType()
You cannot call a method on a null-valued expression.
At line:1 char:1
+ ((New-Object -TypeName System.Int32 ) | ConvertTo-Csv | ConvertFrom-c ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

帮助说:

Inputs
    System.Management.Automation.PSObject
    You can pipe any object that has an Extended Type System (ETS) adapter to ConvertTo-CSV.

所以我打赌你的问题是$ null或空白没有ETS适配器。

以下是对此的更多阅读:https://blogs.msdn.microsoft.com/besidethepoint/2011/11/22/psobject-and-the-adapted-and-extended-type-systems-ats-and-ets/