我使用方法从不同的csv文件中选择记录,我想知道如何创建一个像csv文件一样的空变量。例如......
空数组为$ ack-spinach 'I have an empty array'
空哈希表为$array = @()
非空csv对象为$hashTable = @{}
一个空的csv对象是$csvFileRecords = Import-Csv $someFileName
语法是什么?
答案 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适配器。