我正在编写一个简短的脚本来清点我们基础架构中的所有服务器,这通常是手动完成的,这意味着某些服务器可能在我们的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
}
}
我在这里不知所措,我甚至无法获得前两列的工作...... 我非常感谢的任何建议
答案 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
}
#....
}
以及其他列表。