我正在编写一个脚本,在我们的基础架构中发现不同的服务器。基本上我所做的是从2个不同来源获取服务器的名称和状态,并找到不匹配的内容。源1是我们的SQL,其属性名称和状态(状态可以是InUse或Removed)源2来自vCenter,其属性为Name和PowerState(PoweredOn或PoweredOff)然后将这些存储在不同的变量中,
使用此信息我想比较每个服务器的Status和PowerState,InUse和PoweredOn应匹配并输出为null,而所有其他(对于ex InUse和PoweredOff)不应匹配并输出到表或csv以及服务器名称以供进一步调查。
我尝试将属性重命名为相同名称,然后使用ForEach过滤它们,但我无法让它工作。
感谢任何帮助。
答案 0 :(得分:0)
<强>假设:强>
$ sqllist是SQL中的列表,按名称键入 $ vclist是vCenter中的列表,由名称
键入$output = @()
foreach ($serversql in $sqllist)
{
$entry = $null
$servervc = $vclist.Get($serversql.Name)
if ($serversql.Status -match 'InUse' `
-and $servervc.PowerState -match 'PoweredOn')
{
$entry = [PsCustomObject]@{
Name=$serversql.Name
SqlStatus=$null
vCenterStatus=$null
}
} else
{
$entry = [PsCustomObject]@{
Name=$serversql.Name
SqlStatus=$serversql.Status
vCenterStatus=$servervc.PowerState
}
}
}
$output | Export-CSV -Path log.csv