我仍然在學習PowerShell的開始。我的目標是製作一個腳本,用於提取一天前的SCOM警報,並將警報的netbios計算機名稱與我將導入的CSV中的值進行比較。用新數據填充現有數組/表格
如果CSV中的ServerName與NetbiosName匹配,則會將管理員名稱添加到我創建的原始陣列/表中。目前它可以滿足我所要求的所有內容,但是當它輸出最終數據時,它只會將最後使用的管理員添加到「管理員」列而不是相應的管理員。
NetbiosComputerName:服務器
MonitoringObjectDisplayName:Server.Domain
名稱:等等等等等等
嚴重性:警告
ResolutionState:0
RepeatCount:0
服務器管理員聯繫:聯繫
NetbiosComputerName:服務器
MonitoringObjectDisplayName:Server.Domain
名稱:等等等等等等
嚴重性:警告
ResolutionState:0
RepeatCount:0
服務器管理員聯繫:聯繫
在第二輸出管理應改爲反映特定服務器的管理,而不是很相同。
這是我的代碼。
# 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
}
謝謝你,那絕對是做了什麼,我想和尋找。比我正在努力的更簡單。 – user2166744 2013-03-14 13:39:23