Blackout-Time (VM Live Migration)

Aus Wiki-WebPerfect
Version vom 4. September 2017, 16:04 Uhr von Admin (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Ungültige Sprache.

Die gewünschte Sprache muss wie folgt definiert werden: <source lang="html4strict">...</source>

Unterstützte Sprachen für die Syntaxhervorhebung:

 [Ausklappen


<#

.SYNOPSIS
Für Troubleshooting-Zwecke von Blackout-Zeiten während Live-Migrationen

.DESCRIPTION
Mit diesem Skript kann man alle Blackout-Zeiten während Live-Migrationen innerhalb eines Cluster filtern.

.NOTES
Author: Robin Hermann

.LINK
http://wiki.webperfect.ch


.EXAMPLE
Get-LiveMigrationBlackoutTime -Cluster <ClusterName> -EventLogAge -7
Dieses Beispiel zeigt alle Blackout-Zeiten während Live-Migrationen der letzten 7 Tage an.

#>


Function Get-LiveMigrationBlackoutTime {
    [CmdletBinding()]

    param(
        [Parameter(Position=0,mandatory=$true)][string] $Cluster,
        [Parameter(Position=1,mandatory=$true)][int] $EventlogAge
    )

    process{
        $events = (Get-ClusterNode -Cluster $Cluster).Name | foreach {Get-WinEvent -ComputerName $_ -FilterHashtable @{LogName = 'Microsoft-Windows-Hyper-V-VMMS-Admin'; ID = 20415}} | ? {$_.TimeCreated -ge ((get-date).AddDays($EventlogAge))} | select TimeCreated, Id, Message, MachineName

        $HyperVNode = $events.MachineName

        $table = New-Object system.Data.DataTable “$TableName”

        $spalte1 = New-Object system.Data.DataColumn VM,([string])
        $spalte2 = New-Object system.Data.DataColumn BlackoutTime,([double])
        $spalte3 = New-Object system.Data.DataColumn VMID,([string])
        $spalte4 = New-Object System.Data.DataColumn HyperVNode,([string])
        $spalte5 = New-Object System.Data.DataColumn TimeCreated,([string])

        $table.columns.add($spalte1)
        $table.columns.add($spalte2)
        $table.columns.add($spalte3)
        $table.columns.add($spalte4)
        $table.columns.add($spalte5)


        foreach ($event in $events) {
            $EventMessageVM = $event.message -replace  ".*\'(.*)\'.*blackout time of (.+) seconds \(VMID (.*)\).", '$1'
            $EventMessageBlackoutTime = $event.message -replace ".*\'(.*)\'.*blackout time of (.+) seconds \(VMID (.*)\).", '$2'
            $EventMessageVMID = $event.message -replace ".*\'(.*)\'.*blackout time of (.+) seconds \(VMID (.*)\).", '$3'
            $HyperVNode = $event.MachineName
            $TimeCreated = $event.TimeCreated

            $row = $table.NewRow()
            $row.VM = $EventMessageVM
            $row.BlackoutTime = $EventMessageBlackoutTime
            $row.VMID = $EventMessageVMID
            $row.HyperVNode = $HyperVNode
            $row.TimeCreated = $TimeCreated
            $table.Rows.Add($row)
        }

        $table | sort BlackoutTime -Descending | format-table -AutoSize 
    }
}