Ну, 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 или blank не имеет адаптера ETS.
Вот еще некоторые чтение по этому вопросу: https://blogs.msdn.microsoft.com/besidethepoint/2011/11/22/psobject-and-the-adapted-and-extended-type-systems-ats-and-ets/
Там нет такого понятия, как «объект CSV» - 'Импорт/ConvertFrom-Csv' конкретизирует ряд' psobject's со свойствами построены с использованием данных в формате CSV файл. «Пустой объект csv» в вашей терминологии будет неотличим от пустого массива –