Powershell-скрипт для экспорта содержимого массива в Excel - PullRequest
0 голосов
/ 25 сентября 2018

Я использую приведенный ниже скрипт для экспорта результатов в Excel.Однако при экспорте в Excel я получаю только 1 строку. Пожалуйста, дайте мне знать, как этого добиться.# script

$result = @()

$array = @("testA", "testB", "testC","testD")
$array2 = @("testA1", "testB2", "testC3","testD4")
$tbl = new-object psobject            
$tbl | add-member noteproperty VmName $array
$tbl | add-member noteproperty VMIP $array2
$result += $tbl 

$result|Export-Excel -Path "C:\Users\Empower\Desktop\OMS-Log\test.xlsx"

Вывод на консоль:

VmName                                VMIP                            
------                                      ----                            
{testA, testB, testC, testD}     {testA1, testB2, testC3, testD4}

Экспортированный результат в Excel:

 VmName   VMIP
 testA    testA1

Требуемый результат в Excel

VmName  VMIP
testA   testA1
testB   testB2
testC   testB3
testD   testB4

1 Ответ

0 голосов
/ 25 сентября 2018

Вы создаете один объект с двумя свойствами (каждое из которых является массивом).Для экспорта файла xlsx вам понадобятся четыре объекта с двумя свойствами.Иногда его называют zip :

$array = @("testA", "testB", "testC","testD")
$array2 = @("testA1", "testB2", "testC3","testD4")

$result = [System.Linq.Enumerable]::Zip($array,$array2,[Func[Object, Object, Object[]]]{
    [pscustomobject]@{VmName=$args[0];VMIP=$args[1]}
})

$result | Export-Excel -Path "C:\Users\Empower\Desktop\OMS-Log\test.xlsx"

Zip также можно выразить как:

$result = for ($i=0; $i -lt ([Math]::Min($array.Count, $array2.Count)); $i++) {
    [pscustomobject]@{VmName=$array[$i];VMIP=$array2[$i]}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...