Войти

Показать полную графическую версию : Спонтанные ошибки в Grid


butunin@vk
30-12-2015, 14:41
Function mesto
{

$array2 = New-Object System.Collections.ArrayList
$comp = $textbox3.text
if (Test-Connection $comp -count 1 -quiet)
{
$Script:DiskInfo = Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" -Computer $comp | Select SystemName, DeviceID, @{ Name = "size(GB)"; Expression = { "{0:N1}" -f ($_.size/1gb) } }, @{ Name = "Freespace(GB)"; Expression = { "{0:N1}" -f ($_.freespace/1gb) } }
$array2.AddRange($DiskInfo)
$dataGrid2.DataSource = $array2
}
else
{
[System.Windows.Forms.MessageBox]::Show("Компьютер $comp не отвечает, проверьте имя, фаервол или включите его")
}
}


Не пойму в чем проблема... есть грид который создает табличку, на часть запросов он создает , а на часть ПС вываливается в ошибку

ERROR: Не удается преобразовать аргумент "c", со значением: "@{SystemName=VDA-W81-7; DeviceID=C:; size(GB)=49,7; Freespace(GB)=6,3}", для "AddRange" в тип "System.Col
ERROR: lections.ICollection": "Не удается преобразовать значение "@{SystemName=VDA-W81-7; DeviceID=C:; size(GB)=49,7; Freespace(GB)=6,3}" типа "Selected.System.Manage
ERROR: ment.ManagementObject" в тип "System.Collections.ICollection"."
ERROR: + $array2.AddRange($DiskInfo)
ERROR: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR: + CategoryInfo : NotSpecified: (:) [], MethodException
ERROR: + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
ERROR:

Foreigner
30-12-2015, 17:10
А что скрипт должен вообще выводить и в каком виде. Здесь какой-то обрывок. В частности что за $textbox3 и $dataGrid2, где и как их создали? Как все это выводится в таблицу, зачем создавать [collections.arraylist] ? Много неочевидностей.

butunin@vk
30-12-2015, 17:30
Спасибо за ответ Foreigner, там большую софтину я написал попробую куски выдрать...
либо сам исходник , там наработки но в целом все работает .
Исходник (https://yadi.sk/d/VEtEPRHmmbm4s)
Создавал все в Sapiens powershell Studio
http://s017.radikal.ru/i407/1512/68/cbb98f15a428.jpg
3 это $textbox3
2 это $dataGrid2

[collections.arraylist] для фильтрации в дальнейшем.
могу исходник скинуть (https://yadi.sk/d/VEtEPRHmmbm4s) ...
на скрине , видите отдал значение в грид , а вот имя типа VDA-w81-7 нет , ну и частенько попадаются такие машинки которые с ошибкой выпадают.

butunin@vk
11-01-2016, 14:33
А что скрипт должен вообще выводить и в каком виде. Здесь какой-то обрывок. В частности что за $textbox3 и $dataGrid2, где и как их создали? Как все это выводится в таблицу, зачем создавать [collections.arraylist] ? Много неочевидностей. »

Я походу понял в чем дело, если выводится 1 значение то это должно быть не как коллекция а как элемент, а если 2+ то коллекция.
По этому просто заключил в @(команды)

$Script:DiskInfo = @(Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" -Computer $comp | Select SystemName, DeviceID, @{ Name = "size(GB)"; Expression = { "{0:N1}" -f ($_.size/1gb) } }, @{ Name = "Freespace(GB)"; Expression = { "{0:N1}" -f ($_.freespace/1gb) } })




© OSzone.net 2001-2012