 |
|
Проблема при простом скрипте.
Доброго времени суток. Возникла следующая проблема.
Есть простенький скрипт
Код:
$fileName1 = "E:\1.csv"
$fileName2 = "E:\2.csv"
$csv1 = Import-Csv $fileName1
Write-Host "Input1: `n", $csv1
$csv2 = Import-Csv $fileName2
Write-Host "`nInput2: `n", $csv2
$csv1 += $csv2
Write-Host "`nresult: `n", $csv1
# Сохраняем
$csv1 | Export-Csv $fileName1 -NoTypeInformation
И два файла следующего содержания:
1.csv
"VersionId","SnapshotId"
"01/01/2013-05:50","00000000-0000-0000-0000-000000000000"
и
2.csv
"VersionId","SnapshotId"
"01/01/2013-05:50","00000000-0000-0000-0000-000000000000"
При выполнении скрипта получаю ошибку:
Ошибка
Input1:
@{VersionId=01/01/2013-05:50; SnapshotId=00000000-0000-0000-0000-000000000000}
Input2:
@{VersionId=01/01/2013-05:50; SnapshotId=00000000-0000-0000-0000-000000000000}
Произошла ошибка при вызове метода, так как [System.Management.Automation.PSObj
ect] не содержит метод с именем "op_Addition".
C:\PowerShell-FullShit\test3.ps1:8 знак:9
+ $csv1 += <<<< $csv2
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], Runti
meException
+ FullyQualifiedErrorId : MethodNotFound
result:
@{VersionId=01/01/2013-05:50; SnapshotId=00000000-0000-0000-0000-000000000000}
Подскажите что не так. Идей, что придумать не осталось. С PowerShell знаком плохо, поисковик не помог.
P.S. Если файл 1.csv пустой или содержит 2 строки и т.д., то все работает нормально.
|
[array[]]$csv1 = Import-Csv $fileName1
|
Цитата:
Цитата Kazun
[array[]]$csv1 = Import-Csv $fileName1
|
Не помогло.
Ошибка
Не удается преобразовать значение "@{VersionId=01/01/2013-05:50; SnapshotId=000
00000-0000-0000-0000-000000000000}" типа "System.Management.Automation.PSCustom
Object" в тип "System.Array[]".
C:\PowerShell-FullShit\test3.ps1:4 знак:15
+ [array[]]$csv1 <<<< = Import-Csv $fileName1
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMet
adataException
+ FullyQualifiedErrorId : RuntimeException
Input1:
Input2:
@{VersionId=01/01/2013-05:50; SnapshotId=00000000-0000-0000-0000-000000000000}
result:
@{VersionId=01/01/2013-05:50; SnapshotId=00000000-0000-0000-0000-000000000000}
Да и хотелось бы без преобразований типа обойтись. Поведение ведь странное, т.к. при таком содержании файла скрипт работает нормально.
1.csv
"VersionId","SnapshotId"
"01/01/2013-05:50","00000000-0000-0000-0000-000000000000"
"01/01/2013-05:50","00000000-0000-0000-0000-000000000000"
|
Не в той версии PowerShell проверил,для PowerShell V2:
[psobject[]]$csv1 = Import-Csv $fileName1
|
Цитата:
Цитата Kazun
Не в той версии PowerShell проверил,для PowerShell V2:
[psobject[]]$csv1 = Import-Csv $fileName1
|
Ура! Спасибо.
P.S. Если не сложно, подскажите для общего развития, что не так происходило (зачем нужен [psobject[]])
|
Т.к если содержится 1 элемент в файле, то тип объекта будет PSObject, у которого нет метода op_Addition и PowerShell не понимает, как сложить два значения. Здесь мы явно преобразуем скалярное значение в массив типа PSObject[]. PowerShell позволяет складывать массивы используя +.
|
Цитата:
Цитата Kazun
Т.к если содержится 1 элемент в файле, то тип объекта будет PSObject, у которого нет метода op_Addition и PowerShell не понимает, как сложить два значения. Здесь мы явно преобразуем скалярное значение в массив типа PSObject[]. PowerShell позволяет складывать массивы используя +. »
|
Спасибо еще раз. Понятно и доходчиво.
|
Время: 19:59.
© OSzone.net 2001-