BETA

vCenter上のアラーム定義をタブ区切りで出力する

投稿日:2019-03-28
最終更新:2019-03-28

「vCenter上のアラーム定義を全部Excelシートにまとめろ」というボスからの命令が来たのだが、
手で設定値を調べて転記するのがあほらしいので、タブ区切りで出力する PowerShellScriptを作ってみた。

# vcenterからアラームの設定を抜くスクリプト  
# [項目名]タブ[値] の形式で出力します。  

#VMwareのモジュールロード  
Add-PSSnapin VMWare.VimAutomation.Core  

#実行結果をテキストに出力する(出力先はマイドキュメント)  
start-Transcript  

#vCenterへ接続  
Connect-VIServer -Server [サーバのIPアドレスを記載] -User "[ログインユーザ名を記載]"   


Write-host "アラーム設定出力start"  
$global:DefaultVIServers  
####特定の項目だけだすなら下記のように記載。省略するとアラーム設定を全件出力します  
#Get-AlarmDefinition "ホストの接続とパワー状態" | %{  
Get-AlarmDefinition | Sort-Object Name |%{  

    #アクション設定しているアラートの実行スクリプトをメモ  
    if($_.ExtensionData.info.Action.Action -ne $null){  
        $_ | Get-AlarmAction | %{  
            if($_.ScriptFilePath -ne $null){  
                $MY_ScriptFilePath = $_.ScriptFilePath  
            } else {  
                $MY_ScriptFilePath = ""  
            }  
        }  
    } else {  
            $MY_ScriptFilePath = ""  
    }  

    #アラートの繰り返し時間をメモ  
    if($_.ActionRepeatMinutes -ne $null){  
        $MY_ActionRepeatMinutes = $_.ActionRepeatMinutes  
    } else {  
        $MY_ActionRepeatMinutes = ""  
    }  

    $MY_SettingTarget = $_.Entity.Name  

    $_.ExtensionData.info |%{  
        Write-host "アラーム名:    " $_.Name  
        Write-host " Key:    " $_.Key  
        Write-host " Alarm:    " $_.Alarm  
        Write-host " 説明:    " $_.Description  
        Write-host " 設定有効:    " $_.Enabled  
        Write-host " 設定対象:    " $MY_SettingTarget  

        #トリガー設定を出力  
        Write-host " 【トリガー】"  
        write-host "  トリガー条件(And/Or):    " $_.Expression  
        $MY_trigger_count = 0  
        $_.Expression.Expression | % {  
            $MY_trigger_count = $MY_trigger_count + 1  
            if($_.Operator -eq $null){  
                Write-host "  [trigger" $MY_trigger_count "]"  
                Write-host "   EventType:    " $_.EventType  
                Write-host "   EventTypeId:    " $_.EventTypeId  
                Write-host "   ObjectType:    " $_.ObjectType  
                Write-host "   Status:    " $_.Status  
                $_.Comparisons | % {  
                    Write-host "    [条件]"  
                    Write-host "     AttributeName(引数):    " $_.AttributeName  
                    Write-host "     Operator(演算子):    " $_.Operator  
                    Write-host "     Value(値):    " $_.Value  
                }  
            }else{  
                Write-host "  [trigger" $MY_trigger_count "]"  
                Write-host "   トリガータイプ:    " $_.type  
                Write-host "   条件:    " $_.Operator  
                Write-host "   Yellow:(警告閾値or条件:)    " $_.Yellow  
                Write-host "   YellowInterval:(条件の長さ:)    " $_.YellowInterval  
                Write-host "   Red:(異常閾値or条件:)    " $_.Red  
                Write-host "   RedInterval:(条件の長さ:)    " $_.RedInterval  
            }  
        }  

        #レポート作成部分の設定を出力  
        $_.setting | %{  
            Write-host " 【レポート作成】"  
            Write-host "  範囲 %(x100):    " $_.ToleranceRange  
            Write-host "  頻度 秒:    " $_.ReportingFrequency  
        }  

        #アクション設定を出力  
        $_.Action.Action | % {  
            Write-host " 【アクション】"  
            Write-host "  発生時のアクション:    " $_.Action  
            Write-host "  ScriptFilePath:    " $MY_ScriptFilePath  
            Write-host "  アクションの繰り返し間隔(分):    " $MY_ActionRepeatMinutes  
            $_.TransitionSpecs | % {  
                Write-host "   状態From:    " $_.StartState  
                Write-host "   状態to:    " $_.FinalState  
                Write-host "   通知を繰り返すか(FALSEなら1回):    " $_.Repeats  
            }  
        }  
    }  

#区切りのため、空行を出力  
Write-host " "  
}  
Write-host "アラーム設定出力end"  
stop-transcript  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

T の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!