www.IT-Visions.de-Diskussionsforen (Version 2.1)
(Diese Seite wurde noch nicht auf das neue Layout umgestellt!)


Diese Foren stehen den Lesern unserer Bücher und allen anderen registrieren Benutzern dieser Website zur Verfügung. Wir würden uns freuen, wenn viele Nutzer dieser Website hier nicht nur Fragen stellen, sondern auch die Fragen anderer Nutzer beantworten. Diese Foren sind ein ehrenamtlicher, nicht-kommerzieller, unmoderierter Community-Dienst von www.IT-Visions.de. Wenn Sie kommerzielle Unterstützung für .NET/Scripting/PowerShell suchen, schauen Sie bitte auf unser Support-Angebot und unsere Schulungsangebote für Scripting und Schulungsangebote für .NET.



Unerklärlicher Fehler
Autor:  TuXHunT3R
E-mail:  Antworten bitte nur in das Forum!
Datum:  17.07.2007 15:48:56
Subject:  Unerklärlicher Fehler
Bezug zum Buch: 
Message:  Guten Tag

Bei dem untenstehenden Powershell-Script habe ich folgendes Problem: Sobald ich zurück ins Hauptmenü komme und einen zweiten Menupunkt auswählen will, wird die Ausgabe des zweiten Menupunkts fehlerhaft, d.h. die Ausgabe bleibt entweder leer oder wird nicht so formatiert, wie ich es mit "select-object" oder "sort-object" angegeben habe.
Es funktioniert immer nur die erste Abfrage. Wenn ich eine zweite Abfrage machen will, muss ich das Script zuerst beenden und neu starten.

Ein Beispiel:
Ich starte das Script, gebe den PC-Namen ein und komme ins Hauptmenü. Dort wähle ich z.B. den Menupunkt A, welcher diverse WMI-Abfragen tätigt (CPU, OS, Graka, etc). Danach springe ich ins Hauptmenü zurück. Dort wähle ich z.B. Menüpunkt D (Listet alle laufenden Prozesse auf). Nun kommt entweder eine leere Ausgabe oder die Ausgabe wird nicht korrekt formatiert.

Probiert es am besten selbst mal aus, dann seht ihr, was ich meine!


<code>

# ##########################################################################################################################
# Funktionen:
# -----------


# Funktionen für die Kosmetik
function titel
{
          clear-host
          write-host "PCINFO.PS1"
          write-host "=========="
          write-host " "
          write-host "Aktueller PC: $PCName"
          write-host "------------------------------------------------------------------------" -foregroundcolor cyan
          write-host " "
}

function Fusszeile
{
     write-host " "
     Read-host "Druecke Enter fuer die Rueckkehr ins Hauptmenue"     
}


# ##########################################################################################################################


clear-host

# Eingabe des Nodenames
write-host "PCINFO.PS1"
write-host "=========="
write-host " "
write-host "Willkommen bei PCInfo!"
write-host "Dieses Script zeigt diverse Informationen ueber einen PC oder Server an!"
$PCName = Read-Host "Gib bitte den Namen des PCs ein, der abgefragt werden soll "


# Wird solange wiederholt, bis ExitVariable = true ist
Do {
     clear-host
     write-host "PCINFO.PS1"
     write-host "=========="
     write-host " "
     write-host "Dieses Script zeigt diverse Informationen ueber einen PC oder Server an!"
     write-host " "
     write-host "Aktueller PC / Server: $PCName"
     write-host "------------------------------------------------------------------------" -foregroundcolor cyan
     write-host " "
     write-host "Bitte waehle eine Funktion aus:"
     write-host " "
     write-host "(A) Allgemeine Informationen ueber den PC / Server anzeigen"
     write-host "(B) Software-Informationen anzeigen"
     write-host "(C) Installierte Patches/Hotfixes anzeigen"
     write-host "(D) Laufende Prozesse auflisten"
     write-host "(E) Dienste auflisten"
     write-host "(F) Diskinformationen anzeigen"
     write-host " "
     write-host "(Y) Abzufragenden PC / Server wechseln"
     write-host "(Z) Exit"
     write-host " "
     $auswahl = Read-Host "Deine Auswahl "
     switch ($auswahl) {
          "A" {
               titel
               write-host "Allgemeine Informationen ueber den PC / Server"
               write-host "=============================================="
               write-host " "
               write-host "Computerinformationen :"
               write-host " "
               get-wmiobject -class win32_computersystem -computername $PCName
               write-host " "
               write-host " "
               write-host "Betriebsystem-Informationen :"
               write-host " "
               get-wmiobject -class win32_operatingsystem -computername $PCName
               write-host " "
               write-host " "
               write-host "BIOS-Informationen :"
               write-host " "
               get-wmiobject -class win32_bios -computername $PCName
               write-host " "
               write-host " "
               write-host "CPU-Informationen :"
               write-host " "
               get-wmiobject -class win32_processor -computername $PCName | select-object -property DeviceID, Manufacturer, Name, Description, CPUStatus, CurrentClockSpeed, MaxClockSpeed, SocketDesignation, AdressWith, DataWidth, l2cachesize, ExtClock
               write-host " "
               write-host " "
               write-host "Informationen ueber den/die Grafikchip(s) :"
               write-host " "
               get-wmiobject -class win32_VideoController -computername $PCName | select-object -property DeviceID, Description, Status, VideoProcessor, AdapterRAM, CurrentHorizontalResolution, CurrentVerticalResolution, CurrentBitsPerPixel, InstalledDisplayDrivers, DriverVersion, InfFilename, InfSection   
               Fusszeile
          }
          "B" {
               titel
               write-host "Installierte Software :"
               write-host " "
               get-wmiobject -class win32_product -computername $PCName | select-object -property Name, Version, Vendor | sort-object -property Name, Vendor, Version
               Fusszeile
          }
          "C" {
               titel
               write-host "Installierte Patches/Hotfixes :"
               write-host " "
               get-wmiobject -class Win32_Quickfixengineering -computername $PCName | select-object -property HotFixID, Description, ServicePackInEffect | sort-object -property HotFixID, Description, ServicePackInEffect
               Fusszeile

          }
          "D" {
               titel
               write-host "Laufende Prozesse auf $PCName :"
               write-host " "
               get-wmiobject -class win32_process -computername $PCName | select-object -property processname, path, processid | sort-object -property processname, processid, path
               Fusszeile
          }
          "E" {
               titel
               write-host "Dienste auf $PCName :"
               write-host " "
               get-wmiobject -class win32_service -computername $PCName | select-object -property Name, State | sort-object -property State, Name
               Fusszeile
          }
          "F" {
               titel
               write-host "Diskinformationen von $PCName"
               write-host "================================="
               write-host " "
               write-host "Physikalische Informationen :"
               get-wmiobject -class Win32_Diskdrive -computername $PCName | select-object -property DeviceID, Model, Partitions, Size | sort-object -property deviceid
               write-host " "
               # $laufwerke = get-wmiobject -class Win32_LogicalDisk -computer $PCName
               # write-host " Laufwerk Groesse(MB) Freier Platz(MB)"
               # ForEach ($laufwerk in $laufwerke)
               # {
               # write-host " {0} {1,15:n} {2,15:n}" -f $laufwerk.DeviceID, ($laufwerk.Size/1m), $($laufwerk.freespace/1m)
               # }
               Write-host "Fuellstand laeuft noch nicht!"
               Fusszeile
          }
          "Y" {
               $PCName = Read-Host "Gib bitte den Namen des Kuebels ein, der abgefragt werden soll "
          }
          "Z" {
               $ExitVariable = "true"
          }
          default {
               titel
               write-host " "
               write-warning "Falsche Eingabe! Eingabe muss entweder A, B, C, D, E, Y oder Z sein!"
               Fusszeile
          }
     }

} While ($ExitVariable -ne "true")

</code>


Hat jemand eine Idee? Ich bin mit meinem Latein ziemlich am Ende!

Gruss TuXHunT3R

Antworten

  Zurück zum Forum



 Scripting mit der PowerShell -- Microsoft PowerShell (ehemals Microsoft Shell, Codename Monad)
 Unerklärlicher Fehler  von TuXHunT3R  am 17.7.2007 3:48:56 PM
 Re: Unerklärlicher Fehler  von GregorB.  am 30.11.2007 10:37:49 PM


www.IT-Visions.de - Dr. Holger Schwichtenberg / 1998-2019