私はまだpowershellを学び始めたばかりです。ここでの目標は、1 日経過した SCOM アラートを取得し、アラートの netbios コンピューター名をインポートする CSV の値と比較するスクリプトを作成することです。
CSV の ServerName が NetbiosName と一致する場合、作成した元の配列/テーブルに管理者名が追加されます。現在、私が求めるすべてのことを行っていますが、最終データを出力すると、適切な管理者ではなく、最後に使用された管理者のみが管理者列に追加されます。
NetbiosComputerName : サーバー
MonitoringObjectDisplayName : サーバー.ドメイン
名前 : ブラブラブラ
重大度: 警告
解決状態: 0
繰り返し回数 : 0
サーバー管理者 : 管理者
NetbiosComputerName : サーバー
MonitoringObjectDisplayName : サーバー.ドメイン
名前 : ブラブラブラ
重大度: 警告
解決状態: 0
繰り返し回数 : 0
サーバー管理者 : 管理者
2 番目の出力では、管理者はその特定のサーバーの管理者を反映する必要があり、まったく同じではありません。
これが私のコードです。
# 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
}