Powershell 实例化空csv变量
我正在使用各种方法从不同的csv文件中选取记录,我想知道如何创建一个类似csv文件的空变量。例如 空数组应该是Powershell 实例化空csv变量,powershell,powershell-3.0,Powershell,Powershell 3.0,我正在使用各种方法从不同的csv文件中选取记录,我想知道如何创建一个类似csv文件的空变量。例如 空数组应该是$array=@() 空哈希表应该是$hashTable=@{} 非空csv对象将是$csvFileRecords=Import csv$someFileName 空的csv对象将是?? 语法是什么?一个“CSV对象”实际上只是一个数组(由psobjects组成) 要向该数组添加新记录,只需添加psobjects,其中包含与所需列对应的适当属性。创建具有所需属性的psobject的一种方
$array=@()
空哈希表应该是$hashTable=@{}
非空csv对象将是$csvFileRecords=Import csv$someFileName
空的csv对象将是??
语法是什么?一个“CSV对象”实际上只是一个数组(由psobject
s组成)
要向该数组添加新记录,只需添加psobject
s,其中包含与所需列对应的适当属性。创建具有所需属性的psobject
的一种方法是从哈希表
$obj = new-object psobject -property @{fname="Fiddle";lname="Freak"}
$csvFileRecords += $obj
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的输出不为null,但这显示了管道丢失的位置:
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或blank没有ETS适配器
这里有更多关于这方面的阅读:没有“csv对象”
Import/convertfromCSV
实例化了大量的psobject
s,其属性是使用csv文件中的数据构造的。在您的术语中,“空csv对象”与空数组是无法区分的。如果我想向数组中添加如下记录,该怎么办<代码>导入csv$csvFile |%{If($recordFound){$record=${}。对于$record
,我是否会执行$csvFileRecords+=$record
?是的,当您(使用%{}
或foreach对象{}
)通过使用导入csv
导入的数组中的项进行迭代时,$
将引用单个psobject
,您可以使用+=
轻松地将其添加到另一个数组中。下面的行可以工作:$csvFileRecords=@();导入csv$csvFile |%{If($recordFound){$csvFileRecords+=${}
(假设用有效的条件替换$recordFound
)。
Inputs
System.Management.Automation.PSObject
You can pipe any object that has an Extended Type System (ETS) adapter to ConvertTo-CSV.