0

私はまだ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
  
    
}
4

1 に答える 1

0
$TableSC | Add-Member -MemberType NoteProperty -Name "Server Adminstrator" ...

上記の行は、コレクションのすべてのServer Administratorアイテムのプロパティを指定された値に置き換えます。$TableSC

各アイテムをそれぞれの管理者で更新する場合は、次のようなものが必要です(テストされていません)。

$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]}}
于 2013-03-13T18:51:31.847 に答える