Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Проблема при простом скрипте.

Ответить
Настройки темы
PowerShell - [решено] Проблема при простом скрипте.

Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Доброго времени суток. Возникла следующая проблема.

Есть простенький скрипт

Код: Выделить весь код
$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 строки и т.д., то все работает нормально.

Отправлено: 10:58, 03-04-2013

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


[array[]]$csv1 = Import-Csv $fileName1

Отправлено: 11:40, 03-04-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата 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"

Последний раз редактировалось User001, 03-04-2013 в 12:40.


Отправлено: 12:08, 03-04-2013 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Не в той версии PowerShell проверил,для PowerShell V2:
[psobject[]]$csv1 = Import-Csv $fileName1
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:23, 03-04-2013 | #4


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата Kazun:
Не в той версии PowerShell проверил,для PowerShell V2:
[psobject[]]$csv1 = Import-Csv $fileName1
Ура! Спасибо.

P.S. Если не сложно, подскажите для общего развития, что не так происходило (зачем нужен [psobject[]])

Отправлено: 12:33, 03-04-2013 | #5


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Т.к если содержится 1 элемент в файле, то тип объекта будет PSObject, у которого нет метода op_Addition и PowerShell не понимает, как сложить два значения. Здесь мы явно преобразуем скалярное значение в массив типа PSObject[]. PowerShell позволяет складывать массивы используя +.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:51, 03-04-2013 | #6


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата Kazun:
Т.к если содержится 1 элемент в файле, то тип объекта будет PSObject, у которого нет метода op_Addition и PowerShell не понимает, как сложить два значения. Здесь мы явно преобразуем скалярное значение в массив типа PSObject[]. PowerShell позволяет складывать массивы используя +. »
Спасибо еще раз. Понятно и доходчиво.

Отправлено: 12:55, 03-04-2013 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Проблема при простом скрипте.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - ошибка в скрипте cyber_ua Скриптовые языки администрирования Windows 4 01-03-2012 16:46
VBS/WSH/JS - ошибка в скрипте D_e_n_n Скриптовые языки администрирования Windows 3 12-08-2011 14:03
VBS/WSH/JS - [решено] Проблема с переменными окружения в VBS-скрипте alexmoreman Скриптовые языки администрирования Windows 5 09-03-2011 09:00
C/C++ - [решено] Ошибка в простом коде Hector Программирование и базы данных 5 13-10-2010 07:00
Любой язык - Что неправильного в скрипте? Nun-Nun Скриптовые языки администрирования Windows 7 07-10-2010 20:44




 
Переход