实例化空 csv 变量
Instantiate empty csv variable
我正在使用方法从不同的 csv 文件中选取记录,我想知道如何创建一个像 csv 文件一样运行的空变量。例如...
一个空数组将是 $array = @()
空散列 table 将是 $hashTable = @{}
一个非空的 csv 对象将是 $csvFileRecords = Import-Csv $someFileName
一个空的 csv 对象将是 ????
语法是什么?
一个"CSV object"实际上只是一个数组(psobject
)。
$csvFileRecords = @()
要向该数组添加新记录,您只需要添加 psobject
s 与对应于所需列的适当属性。创建具有所需属性的 psobject
的一种方法是从散列 table.
$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 的输出不为空,但这表明您丢失了管道的位置:
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 适配器。
这里有一些关于此的更多阅读:https://blogs.msdn.microsoft.com/besidethepoint/2011/11/22/psobject-and-the-adapted-and-extended-type-systems-ats-and-ets/
我正在使用方法从不同的 csv 文件中选取记录,我想知道如何创建一个像 csv 文件一样运行的空变量。例如...
一个空数组将是 $array = @()
空散列 table 将是 $hashTable = @{}
一个非空的 csv 对象将是 $csvFileRecords = Import-Csv $someFileName
一个空的 csv 对象将是 ????
语法是什么?
一个"CSV object"实际上只是一个数组(psobject
)。
$csvFileRecords = @()
要向该数组添加新记录,您只需要添加 psobject
s 与对应于所需列的适当属性。创建具有所需属性的 psobject
的一种方法是从散列 table.
$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 的输出不为空,但这表明您丢失了管道的位置:
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 适配器。
这里有一些关于此的更多阅读:https://blogs.msdn.microsoft.com/besidethepoint/2011/11/22/psobject-and-the-adapted-and-extended-type-systems-ats-and-ets/