Arrays 用新数据填充现有数组/表
我还处于学习powershell的开始阶段。我的目标是创建一个脚本,用于提取一天前的SCOM警报,将警报的netbios计算机名与我将导入的CSV中的值进行比较 如果CSV中的服务器名与NetbiosName匹配,则会将管理员名添加到我创建的原始阵列/表中。目前,它可以满足我的所有要求,但当我让它输出最终数据时,它只会将最后一个使用的管理员添加到“管理员”列中,而不是相应的管理员 NetbiosComputerName:服务器 MonitoringObject显示名称:Server.Domain 姓名:诸如此类 严重性:警告 分辨率状态:0 重复计数:0 服务器管理员:AdminArrays 用新数据填充现有数组/表,arrays,powershell,foreach,Arrays,Powershell,Foreach,我还处于学习powershell的开始阶段。我的目标是创建一个脚本,用于提取一天前的SCOM警报,将警报的netbios计算机名与我将导入的CSV中的值进行比较 如果CSV中的服务器名与NetbiosName匹配,则会将管理员名添加到我创建的原始阵列/表中。目前,它可以满足我的所有要求,但当我让它输出最终数据时,它只会将最后一个使用的管理员添加到“管理员”列中,而不是相应的管理员 NetbiosComputerName:服务器 MonitoringObject显示名称:Server.Domain
NetbiosComputerName:服务器 MonitoringObject显示名称:Server.Domain 姓名:诸如此类 严重性:警告 分辨率状态:0 重复计数:0 服务器管理员:Admin 在第二个输出中,Admin应该反映特定服务器的Admin,而不是非常相同的服务器 这是我的密码
# Load SCOM snap-in
add-pssnapin "Microsoft.EnterpriseManagement.OperationsManager.Client";
$server = "RMSSERVER"
# Connect to OpsMgr SDK - change management server to your RMS
new-managementGroupConnection -ConnectionString:RMSSERVER.domain;
set-location "OperationsManagerMonitoring::";
$Date = (Get-Date).adddays(-1)
$ScomAlert = get-alert | where {($_.ResolutionState -eq 0) -and ($_.TimeRaised -gt $Date) } | Select NetbiosComputerName,MonitoringObjectDisplayName, Name,Severity, ResolutionState, RepeatCount
$Administrators = Import-CSV "C:\Script\SCOM\admin.csv"
$TableSC = $ScomAlert
ForEach ($Alert in $ScomAlert)
{
$NetBios = "$($Alert.NetBiosComputerName)"
$MonObjectName = "$($Alert.MonitoringObjectDisplayName)"
$AlertName = "$($Alert.Name)"
$Severity = "$($Alert.Severity)"
$ResState = "$($Alert.ResolutionState)"
$RepCount = "$($Alert.RepeatCount)"
ForEach ( $Admin in $Administrators )
{
$ServerName = "$($Admin.ServerName)"
$ServerAdmin = "$($Admin.AdminName)"
if($ServerName -eq $NetBios)
{
$ServerAdministrator = $ServerAdmin
}
}
$TableSC | Add-Member -MemberType NoteProperty -Name "Server Adminstrator" -Value $ServerAdministrator -Force
}
上行将集合$TableSC
的所有项目中的属性Server Administrator
替换为给定值
如果您希望每个项目都由相应的管理员更新,则需要以下内容(未测试):
谢谢你,这绝对是我想要的和期待的。比我的工作目标简单得多。
$TableSC | Add-Member -MemberType NoteProperty -Name "Server Adminstrator" ...
$Administrators = @{}
Import-Csv "C:\Script\SCOM\admin.csv" | % {
$Administrators[$_.ServerName] = $_.AdminName
}
$TableSC = $ScomAlert | select NetBiosComputerName,
MonitoringObjectDisplayName, Name, Severity, ResolutionState, RepeatCount,
@{n="Server Administrator";e={$Administrators[$_.NetBiosComputerName]}}