将数据编译为要导出为CSV / excel的列

时间:2016-02-24 10:40:55

标签: excel powershell custom-object

我正在编写一个简短的脚本来清点我们基础架构中的所有服务器,这通常是手动完成的,这意味着某些服务器可能在我们的SQL DB中显示为活动但实际上是脱机的,反之亦然。 我想要做的是查询我们的vCenter,SQL和AD,然后将结果编译成csv以便在Excel中查看(参见图片)http://imgur.com/NnwEM4H

现在我的问题是:如何正确添加列并格式化?我想为每个服务器名分配一个单独的行,这意味着有时该行在一个或多个列中将为空/空。参考列表将始终包含服务器名称。

我尝试了以下内容:

$ServerList = @()

foreach ($p in $RefList)
{   
    $Server = New-Object System.Object
    $Server | Add-Member -MemberType NoteProperty -Name RefrenceList -Value $p.Name

    $ServerList += $Server
}

foreach ($s in $VMList)
{   
    $Server = New-Object System.Object
    $Server | Add-Member -MemberType NoteProperty -Name vCenter -Value $s.name

    $ServerList += $Server
}

哪个不会创建vCenter列或向其添加任何数据。

我还在reddit / r / powershell上询问过并尝试了以下内容,这些内容无论如何都不起作用:

$ServerList = @()

foreach ($p in $RefList)    
{    
    $Server = New-Object System.Object   
    $Server | Add-Member -MemberType NoteProperty -NameRefrenceList -Value $p.Name       

    $ServerList += $Server     
}         

Foreach ($server in $serverlist)    
{
    if ($vmlist -contains $server)
    {
        $server | add-member -MemberTypeNoteProperty -Name VMList -Value $Server
    }
}

我在这里不知所措,我甚至无法获得前两列的工作...... 我非常感谢的任何建议

1 个答案:

答案 0 :(得分:0)

首先构建List将是所有Noteproperties:

$ServerList = $reflist | select Name, SQL,SCCM, AD, VCenter #as needed.

现在,您可以使用foreach语句轻松更新字段。

foreach ($server in $ServerList)    
{
  if ($vmlist -contains $server)
  {
    $Server.VCenter =  $Server.Name
  }
  if ($sqllist -contains $server)
  {
    $Server.SQL =  $Server.Name
  }
 #....
}

以及其他列表。