Как сделать умножение между массивом переменных и фиксированным числом, используя powershell? - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь умножить 10 на переменную, полученную из списка доступных массивов плотности диска C :. Тем не менее, он не может "Не удается преобразовать значение" System.Object [] "типа" System.Object [] "в тип" System.Int32 "."

Интересно, встречался ли кто-нибудь с этой проблемой?

$deviceID = 'C:'
$a= Get-WMIObject Win32_LogicalDisk -Filter "DeviceId='$deviceID'" | Select-Object Size, FreeSpace, VolumeName, DeviceID, @{n='SizeGb';e={[int]($_.Size/1GB)}}
$aarray= @()
$a| % {$aarray += $_.SizeGb}
$ans = ([int]$aarray * 10)
$ans * 10

1 Ответ

2 голосов
/ 08 мая 2019

Вы пытаетесь привести System.Object[] к [int] (что невозможно) через эту строку:

[int]$aarray * 10 

Вы должны проиндексировать массив через цикл foreach / for (или через ForEach-Object) и выполнить умножение. Также ознакомьтесь с Powershells about_array section .

Например:

PS C:\> $arrayMultipliedByTen = $aarray | % { $_ * 10 }
PS C:\> $arrayMultipliedByTen
4640

Также помните, что умножение массива будет сбрасывать значения массива n раз. Пример:

PS C:\> $arr = 0..1
PS C:\> $arr
0
1
PS C:\> $arr * 2
0
1
0
1

То, что вы хотите:

PS C:\> $arr | % { $_ * 2 }
0
2

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...