2016-03-15 108 views
2

我正在使用方法從不同的csv文件中選擇記錄,我想知道如何創建一個空行爲像csv文件的變量。對於實施例...實例化空csv變量

空數組將$array = @()

空哈希表將是$hashTable = @{}

一個非空的CSV對象將是$csvFileRecords = Import-Csv $someFileName

空CSV對象將是????

語法是什麼?

+0

有作爲「CSV對象」沒有這樣的事 - '導入/ ConvertFrom-Csv'實例一些'在CSV使用數據構建了性能psobject's文件。術語中的「空csv對象」與空數組無法區分 –

回答

1

「CSV對象」實際上只是一個數組(psobject s)。

$csvFileRecords = @() 

將新記錄添加到該數組,你只需要與對應於所需列具有適當的屬性添加psobject秒。創建具有所需屬性的psobject的一種方法是從散列表中獲取。

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

如果我想向數組添加如下記錄,該怎麼辦? 'import-csv $ csvFile | %{If($ recordFound){$ record = $ _}}'。對於'$ record',我只需要做'$ csvFileRecords + = $ record'? –

+0

是的,當你用'import-csv'導入的數組中的項迭代(使用'%{}'或'foreach-object {}')時,'$ _'將引用一個'psobject',你可以使用'+ ='輕鬆地添加到另一個數組中。下面這行會起作用:'$ csvFileRecords = @(); import-csv $ csvFile | %{If($ recordFound){$ csvFileRecords + = $ _}}'(假設你用有效的條件替換$ recordFound)。 – Thriggle

1

那麼,CSV的無法從$空創建的,但你可以做這樣的事情:

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/