none
Skript Fehler..... RRS feed

  • Frage

  • Hallo,

    ich habe folgendes Script:

    #
    # PowerCLI script for monitoring old VM snaphots in a datacenter.
    # Author: Haukur Kristinsson
    #
    # Example commandline in nsc.ini (for NRPE++):
    # command[check_REYDatacenterSnaphots]=C:\Users\haukurk>powershell -PSConsoleFile "c:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" "& 'c:\ReportsCLI\REYSnapshotNagios.ps1'"
    # Where check_REYDatacenterSnaphots is the command, vim.psc1 the console file, and REYSnapshotNagios.ps1 this script.
    #
    # This is nothing fancy, but I decided to share it with you..
    #
    
    $server = "VMCBDF01" #vCenter server..
    $user = "xxxx\User" # user
    $pass = "xxxxxx" # pass
    
    $datacenter = "Datacenter" # datacenter name
    $criticalSnaphostDays = -1 # how many days can a snapshot last?
    
    Connect-VIServer -Server $server -Protocol https -User $user -Password $pass
    
    #Start with 0 snapshots :-)
    $oldSnapshots = 0
    
    # Fetch snapshots from the datacenter.
    Get-View -ViewType VirtualMachine -Property Name,Snapshot -SearchRoot(Get-Datacenter $datacenter | get-view).MoRef `
    -Filter @{"Snapshot"="VMware.Vim.VirtualMachineSnapshotInfo"} | foreach-object {
        $vmname = $_.Name
        (Get-View -Id $_.MoRef -Property Snapshot).Snapshot.RootSnapshotList | foreach-object {
            If ($_.CreateTime -lt (get-date).adddays($criticalSnaphostDays))
            {
    		# Lets increment the integer.
    		$oldSnapshots++
            }
        }
    }
    
    # Return Values for NRPE: 
    # - OK (0)  
    $exitOK = 0
    # - WARNING (1) 
    $exitWarn = 1
    # - Critial (2)
    $exitCritical = 2 
    # - UNKNOWN (3)
    $exitUnknown = 3
    
    # Exit with approriate exit code.
    if ($oldSnapshots -eq 0) {
    	Write-Host "OK - $oldSnapshots snapshots older than $criticalSnaphostDays"
    	exit $exitOK 
    }
    if ($oldSnapshots -eq 1) {
    	Write-Host "WARNING - $oldSnapshots snapshots older than $criticalSnaphostDays"
    	exit $exitCritical 
    }
    
    # Something went wrong...
    Write-Host "UNKNOWN script state"
    exit $returnStateUnknown

    Es kommt die Meldung Unknown script state…...
    Finde den Fehler leider nicht......
    Jemand eine Idee warum er mir das auswirft?

    Danke und Gruß
    Dennis


    • Bearbeitet HaschkeD Freitag, 8. Februar 2019 12:56
    Freitag, 8. Februar 2019 12:55

Antworten

  • Du erhältst die Meldung ganz korrekt weil

    $oldSnapshot

    größer als 1 ist. :)
    Du fragst am Ende zwei Möglichkeiten ab, $oldsnapshot -eq 0 oder -eq 1, in allen anderen Fällen kommt die von dir beschriebene "Fehlermeldung".

    Ob das wirklich ein Fehler ist, musst du beurteilen, aber von der zugehörigen Nachricht ausgehend müsste die zweite Abfrage eher "-ge 1" lauten.


    Blog: http://www.bytecookie.de

    Powershell Code Manager v6: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Freitag, 8. Februar 2019 13:53
    Moderator
  • Das ist nicht schwer, der wird ja bereits abgefragt und einer Variable zugewiesen.
    Für Ersteres musst du dir da wo auch der oldsnapshot-Wert erhöht wird, den Namen der aktuellen VM merken, für letzteres erstellst du ein Array mit den Namen und überspringst die Snapshotabfrage jeweils dann, wenn der aktuelle Name mit einem aus dem Array übereinstimmt.


    Blog: http://www.bytecookie.de

    Powershell Code Manager v6: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.


    Samstag, 9. Februar 2019 10:29
    Moderator

Alle Antworten

  • Dafür gibts die IDE zum debuggen. Bei Fehlern hält der Debugger dann an.

    VisualStudioCode ist da auch ganz hilfreich.

    Freitag, 8. Februar 2019 13:03
  • Du erhältst die Meldung ganz korrekt weil

    $oldSnapshot

    größer als 1 ist. :)
    Du fragst am Ende zwei Möglichkeiten ab, $oldsnapshot -eq 0 oder -eq 1, in allen anderen Fällen kommt die von dir beschriebene "Fehlermeldung".

    Ob das wirklich ein Fehler ist, musst du beurteilen, aber von der zugehörigen Nachricht ausgehend müsste die zweite Abfrage eher "-ge 1" lauten.


    Blog: http://www.bytecookie.de

    Powershell Code Manager v6: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Freitag, 8. Februar 2019 13:53
    Moderator
  • Stimmt :-)
    Habe es mal getestet wenn keine Snappis vorhanden sind, dann geht's auch wie gewünscht :-)

    Jetzt wäre es schön wenn er mir noch ausspucken könnte welche VM's einen Snapshot hätten und eine Art Blacklist zum Ausschluss einiger VM's….
    Samstag, 9. Februar 2019 07:52
  • Das ist nicht schwer, der wird ja bereits abgefragt und einer Variable zugewiesen.
    Für Ersteres musst du dir da wo auch der oldsnapshot-Wert erhöht wird, den Namen der aktuellen VM merken, für letzteres erstellst du ein Array mit den Namen und überspringst die Snapshotabfrage jeweils dann, wenn der aktuelle Name mit einem aus dem Array übereinstimmt.


    Blog: http://www.bytecookie.de

    Powershell Code Manager v6: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.


    Samstag, 9. Februar 2019 10:29
    Moderator
  • Mir fehlt leider das notwendige PS Know How :-(
    Samstag, 9. Februar 2019 10:43
  • Ich weiß. :)
    Deshalb wirds dringend Zeit sich das anzueignen.

    Blog: http://www.bytecookie.de

    Powershell Code Manager v6: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Samstag, 9. Februar 2019 10:49
    Moderator