Powershell:导出 csv 文件中的 System.Object[]

标签 powershell azure csv export export-csv

我编写了这个脚本来生成 csv 文件:

$VMs = Get-AzureRmVM
$vmOutput = @()
$VMs | ForEach-Object { 
  $tmpObj = New-Object -TypeName PSObject
  $tmpObj | Add-Member -MemberType Noteproperty -Name "VM Name" -Value $_.Name
  $tmpObj | Add-Member -MemberType Noteproperty -Name "VM Type" -Value $_.StorageProfile.osDisk.osType
  $tmpObj | Add-Member -MemberType Noteproperty -Name "VM Profile" -Value $_.HardwareProfile.VmSize
  $tmpObj | Add-Member -MemberType Noteproperty -Name "VM OS Disk Size" -Value $_.StorageProfile.OsDisk.DiskSizeGB
  $tmpObj | Add-Member -MemberType Noteproperty -Name "VM Data Disk Size" -Value $_.StorageProfile.DataDisks.DiskSizeGB
  $vmOutput += $tmpObj
}
$vmOutput | export-csv C:\Users\***\data.csv -delimiter ";" -force -notypeinformation

但由于最后一列虚拟机数据磁盘大小在文件中存储一个以上数据(可以有多个磁盘),因此它们显示为 System.Object[]。如何强制 powershell 将这些数据连接到单个字符串中?

我尝试在最后一行的 $vmoutput 之后的第 9 行的 $tmpObj 之后添加 -join 参数,但没有令人满意的结果结果。

最佳答案

尝试将分层数据转换为结构化数据总是很棘手。像这样的东西实际上应该有效:

$VMs = Get-AzureRmVM
$vmOutput = $VMs | ForEach-Object { 
    [PSCustomObject]@{
        "VM Name" = $_.Name
        "VM Type" = $_.StorageProfile.osDisk.osType
        "VM Profile" = $_.HardwareProfile.VmSize
        "VM OS Disk Size" = $_.StorageProfile.OsDisk.DiskSizeGB
        "VM Data Disk Size" = ($_.StorageProfile.DataDisks.DiskSizeGB) -join ','
    }
}
$vmOutput | export-csv C:\Users\***\data.csv -delimiter ";" -force -notypeinformation

我只是无法测试 - 抱歉。

关于Powershell:导出 csv 文件中的 System.Object[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51099068/

相关文章:

c# - Powershell Runspace 进入PSSession

python - Django WSGIRequest.get_full_path() 不返回完整的 URI

Azure 自动化调用-Sqlcmd : Login failed for user '<token-identified principal>'

powershell - 如何将当前项目返回到管道?

c# - 类型或命名空间名称 'AspNetCore' 在命名空间 'Microsoft' 中不存在

excel - 将工作表添加到现有 Excel 工作表而不删除其他工作表

vim - 如何在 vim 中处理 csv 文件

python - 从 sqlalchemy 转储 csv

powershell - 如何创建带有是/否按钮和信息标记图标的弹出窗口?

azure - 有没有办法在执行 Azure 逻辑应用程序的后续步骤之前完成 "wait" "Azure Data Factory"执行任务