Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 将数据导出到CSV列_Powershell - Fatal编程技术网

Powershell 将数据导出到CSV列

Powershell 将数据导出到CSV列,powershell,Powershell,我有两个数组-$Hostnames和$ipaddress My$Hostname数组显示计算机主机名列表,$Ipaddresses数组显示与$hostnames数组相对应的IPAddress列表 我有一个现有的CSV文件,有两个标题——“主机名”和“Ipaddress” 我想将2个数组导出到我的CSV文件中,包含2列。一列包含主机名,另一列包含IP地址 在这个网站和我访问过的其他网站上,有许多类似问题的答案,但到目前为止,没有一个对我有帮助 这是我得到的最接近的 $CSV = Import-Cs

我有两个数组-$Hostnames和$ipaddress

My$Hostname数组显示计算机主机名列表,$Ipaddresses数组显示与$hostnames数组相对应的IPAddress列表

我有一个现有的CSV文件,有两个标题——“主机名”和“Ipaddress”

我想将2个数组导出到我的CSV文件中,包含2列。一列包含主机名,另一列包含IP地址

在这个网站和我访问过的其他网站上,有许多类似问题的答案,但到目前为止,没有一个对我有帮助

这是我得到的最接近的

$CSV = Import-Csv -path C:\temp\scripts\ReimageCheck\results.csv

foreach ($column in $CSV) {

generate column 1 value.

    $column."Hostname" = $Hostnames

generate column 2 value.

    $column."Ipaddress" = $Ipaddresses

} 

$CSV | Export-Csv -Path C:\temp\scripts\ReimageCheck\Results2.csv

但是当我打开“Results2.csv”时,所有的信息都是分散在各处的一堆乱码。任何帮助都将不胜感激。如果我们不需要预先存在的csv文件,只需要创建一个包含两列信息的新csv文件,那就更好了。

假设您的两个阵列实际上大小相同

您可以在for循环中对它们进行迭代,并将新的
pscustomobject
添加到数组中,然后将其保存为CSV

$data = @()
$hostnames = @('h1','h2','h3')
$ipaddresses = @('1.1.1.1','2.2.2.2','3.3.3.3')

for ($i = 0; $i -lt $hostnames.Count; $i++)
{
    $data += [pscustomobject]@{'HostName'=$hostnames[$i]; 'IpAddress'=$ipaddresses[$i]}
}

# test
$data | ConvertTo-Csv -NoTypeInformation

#
#$data | Export-Csv -Path 'C:\temp\scripts\ReimageCheck\Results2.csv'

有几种方法可以提高该算法的速度等,但这以最直接的方式展示了这一点。通过遍历ISE或VSCode来调试和理解代码。还可以使用
Get Help
搜索其他对您来说是新的内容。

对于大型CSV文件,上述操作将非常低效,因为循环的每次迭代都会重新创建数组$数据

一个更有效的解决办法是

$hostnames = @('h1','h2','h3')
$ipaddresses = @('1.1.1.1','2.2.2.2','3.3.3.3')

$data = for ($i = 0; $i -lt $hostnames.Count; $i++)
{
    [pscustomobject]@{'HostName'=$hostnames[$i]; 'IpAddress'=$ipaddresses[$i]}
}

# test
$data | ConvertTo-Csv -NoTypeInformation

#
#$data | Export-Csv -Path 'C:\temp\scripts\ReimageCheck\Results2.csv'

垃圾输出听起来像是编码问题。请编辑问题并显示示例输入和乱码输出。使用屏幕截图作为输出的最后手段(它比文本更难阅读)。