Anlage des Repos
This commit is contained in:
261
test/SystemDriver.ps1
Normal file
261
test/SystemDriver.ps1
Normal file
@@ -0,0 +1,261 @@
|
||||
#############################################################################
|
||||
# Commandlet: get-sysdriver und set-sysdriver #
|
||||
# Autor: Armin Friedrich #
|
||||
# Klasse: Win32_SystemDriver #
|
||||
# Beschreibung: #
|
||||
# Systemtreiber fuer Basisdienste ausgeben, starten bzw. stoppen #
|
||||
# Aufruf der Commandlets mit Parametern durch , getrennt #
|
||||
# Beispiele: #
|
||||
# get-sysdriver, get-sysdriver g1_11,netbios, get-systreiber netbios #
|
||||
# set-sysdriver, set-sysdriver beep,start, set-systreiber g1_10,beep,stop #
|
||||
#############################################################################
|
||||
|
||||
function get-SysDriver {
|
||||
param([string[]]$arg)
|
||||
begin{
|
||||
$anz=0 # Variable fuer die Anzahl der eingegebenen Parameter
|
||||
# Schleife zur Ermittlung Anzahl Parameter
|
||||
if($arg){
|
||||
foreach ($anzahl in $arg)
|
||||
{
|
||||
$anz++ # Anzahl der Parameter
|
||||
}
|
||||
}
|
||||
|
||||
# Pruefung, von welchem Rechner die Systemtreiber abgefragt werden
|
||||
# inklusive Auswahl des entsprechenden Treibers
|
||||
|
||||
# Keine Eingabe - dann manuelle Auswahl Treiber und Auswahl PC
|
||||
if($anz -eq 0)
|
||||
{
|
||||
$treiber = Read-Host "Bestimmter Treiber oder <ENTER> fuer alle"
|
||||
$pc = Read-Host "Welcher PC"
|
||||
}
|
||||
# Eingabe von PC und Treiber korrekt erfolgt (z.B. get-sysdriver g1_11,vga)
|
||||
elseif ($anz -eq 2)
|
||||
{
|
||||
$pc = $arg[0]
|
||||
$treiber = $arg[1]
|
||||
}
|
||||
# Eingabe vom Treiber erfolgt (z.B. get-sysdriver vga) - Auswahl des PC moeglich
|
||||
else
|
||||
{
|
||||
$treiber = $arg[0]
|
||||
$pc = Read-Host "Welcher PC"
|
||||
}
|
||||
}
|
||||
process{
|
||||
}
|
||||
end{
|
||||
# Pruefung wenn bei PC nicht . fuer localhost eingegeben wurde
|
||||
# ob der Rechner auch erreichbar ist
|
||||
if($pc -ne ".")
|
||||
{
|
||||
$adress="Address='"+$pc+"'"
|
||||
$p=Get-WmiObject -Class Win32_PingStatus -Filter $adress |select-object statuscode
|
||||
if($p.statuscode -ne 0)
|
||||
{
|
||||
Write-Host -ForegroundColor red -BackgroundColor yellow "keine Verbindung zu dem angegebenen PC"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
# Wenn ENTER dann alle Systemtreiber ausgeben
|
||||
if($treiber -eq "")
|
||||
{
|
||||
$treiber = Get-WmiObject -Class "Win32_SystemDriver" -computername $pc -Namespace "ROOT\CIMV2"
|
||||
$treiber | select-object Name,Status,State,AcceptStop,StartMode,Systemname | Format-Table
|
||||
}
|
||||
# Ausgabe des eingegebenen Systemtreibers
|
||||
else
|
||||
{
|
||||
# Hilfsvariable zum Treibervergleich
|
||||
$tmp=$treiber
|
||||
$treiber = Get-WmiObject -Class "Win32_SystemDriver" -computername $pc -Namespace "ROOT\CIMV2" | Where-Object {$_.Name -eq $treiber}
|
||||
# Pruefung, ob der Treiber ueberhaupt existiert
|
||||
if($treiber.name -ne $tmp)
|
||||
{
|
||||
write-host -ForegroundColor red "Treiber exisitiert nicht"
|
||||
break
|
||||
}
|
||||
# Wenn Treiber exisitiert, dann Ausgabe der entsprechenden Daten
|
||||
else
|
||||
{
|
||||
Write-Host "*******************************************"
|
||||
Write-Host " Name: " $treiber.name
|
||||
Write-Host " Status: " $treiber.status
|
||||
Write-Host " State: " $treiber.state
|
||||
Write-Host " Accept Stop: " $treiber.acceptstop
|
||||
Write-Host "*******************************************"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function set-SysDriver {
|
||||
param([string[]]$arg)
|
||||
begin{
|
||||
$anz=0 # Variable fuer die Anzahl der eingegebenen Parameter
|
||||
# Schleife zur Ermittlung Anzahl Parameter
|
||||
if($arg){
|
||||
foreach ($anzahl in $arg)
|
||||
{
|
||||
$anz++ # Anzahl der Parameter
|
||||
}
|
||||
}
|
||||
|
||||
# Pruefung, ob Parameter eingegeben wurden:
|
||||
if($anz -le 1)
|
||||
{
|
||||
# Gar kein Parameter wurde eingegeben (z.B. set-sysdriver)
|
||||
falscheeingabe
|
||||
$pc = Read-Host "Welcher PC "
|
||||
$treiber = Read-Host "Welcher Systemtreiber "
|
||||
$status = Read-Host "Start oder Stop "
|
||||
if($status -ne "start" -and $status -ne "stop")
|
||||
{
|
||||
Write-Host "falsch Eingabe beim Status!!"
|
||||
$status = Read-Host "Status (start/stop)"
|
||||
}
|
||||
}
|
||||
# 2 Parameter eingegeben (z.B. set-sysdriver netbios,start)
|
||||
elseif ($anz -eq 2)
|
||||
{
|
||||
$pc = "."
|
||||
$treiber = $arg[0]
|
||||
$status = $arg[1]
|
||||
if($status -ne "start" -and $status -ne "stop")
|
||||
{
|
||||
Write-Host "falsch Eingabe beim Status!!"
|
||||
$status = Read-Host "Status (start/stop)"
|
||||
}
|
||||
}
|
||||
# 3 Parameter eingegeben (z.B. set-sysdriver g1_11,netbios,start)
|
||||
else
|
||||
{
|
||||
$pc = $arg[0]
|
||||
$treiber = $arg[1]
|
||||
$status = $arg[2]
|
||||
if($status -ne "start" -and $status -ne "stop")
|
||||
{
|
||||
Write-Host "falsch Eingabe beim Status!!"
|
||||
$status = Read-Host "Status (start/stop)"
|
||||
}
|
||||
}
|
||||
}
|
||||
process{
|
||||
}
|
||||
end{
|
||||
# Pruefung wenn bei PC nicht . fuer localhost eingegeben wurde
|
||||
# ob der Rechner auch erreichbar ist
|
||||
if($pc -ne ".")
|
||||
{
|
||||
$adress="Address='"+$pc+"'"
|
||||
$p=Get-WmiObject -Class Win32_PingStatus -Filter $adress |select-object statuscode
|
||||
if($p.statuscode -ne 0)
|
||||
{
|
||||
Write-Host -ForegroundColor red -BackgroundColor yellow "keine Verbindung zu dem angegebenen PC"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
# Keine Treiber angegeben
|
||||
if($treiber -eq "")
|
||||
{
|
||||
write-host -ForegroundColor red "Kein Treiber angegeben"
|
||||
break
|
||||
}
|
||||
# Pruefungen, wenn Treiber angegeben
|
||||
else
|
||||
{
|
||||
# Hilfsvariable zum Treibervergleich
|
||||
$tmp=$treiber
|
||||
$treiber = Get-WmiObject -Class "Win32_SystemDriver" -computername $pc -Namespace "ROOT\CIMV2" | Where-Object {$_.Name -eq $treiber}
|
||||
# Pruefung, ob der Treiber ueberhaupt existiert
|
||||
if($treiber.name -ne $tmp)
|
||||
{
|
||||
write-host -ForegroundColor red "Treiber exisitiert nicht"
|
||||
break
|
||||
}
|
||||
# Treiber exisitiert -> Abarbeiten von Parameter Start bzw. Stop
|
||||
else
|
||||
{
|
||||
# Pruefung Status:
|
||||
switch($status)
|
||||
{
|
||||
# Pruefung ob Starten des Treibers moeglich ist:
|
||||
"Start"
|
||||
{
|
||||
# Pruefung ob der angegebene Treiber bereits laeuft:
|
||||
if($treiber.state -like "running")
|
||||
{
|
||||
Write-Host -ForegroundColor yellow "Treiber laeuft bereits"
|
||||
break
|
||||
}
|
||||
else
|
||||
{
|
||||
# Zuweisung Ergebnis Startvorgang
|
||||
$erg = $treiber.startservice()
|
||||
} # Abschluss Pruefung, ob Treiber bereits laeuft
|
||||
|
||||
# Pruefung ob der angegebene Treiber korrekt gestartet wurde:
|
||||
if($erg.returnvalue -eq "0")
|
||||
{
|
||||
Write-Host -ForegroundColor green "Treiber" $treiber.name "wurde gestartet"
|
||||
}
|
||||
else
|
||||
{
|
||||
# Fehlermeldung, da Ergebnis -ne 0 ist -> d. h. Treiber konnte nicht gestartet werden:
|
||||
Write-Host -ForegroundColor Red "Treiber" $treiber.name "konnte nicht gestartet werden"
|
||||
Write-Host -ForegroundColor Red "Fehler-Nummer" $erg.returnvalue
|
||||
} # Abschluss Pruefung, ob Treiber korrekt gestartet wurde
|
||||
} # Ende Start
|
||||
|
||||
# Pruefung ob Stoppen des Treibers moeglich ist:
|
||||
"Stop"
|
||||
{
|
||||
# Pruefung, ob ein stoppen des Treibers ueberhaupt moeglich ist
|
||||
if($treiber.AcceptStop -like "false")
|
||||
{
|
||||
Write-Host -ForegroundColor red "Treiber kann nicht gestoppt werden"
|
||||
break
|
||||
} # Abschluss Pruefung, ob Treiber gestoppt werden kann
|
||||
|
||||
# Pruefung ob der angegebene Treiber schon gestoppt ist:
|
||||
if($treiber.state -like "stopped")
|
||||
{
|
||||
Write-Host "Treiber ist bereits gestoppt"
|
||||
break
|
||||
}
|
||||
else
|
||||
{
|
||||
# Zuweisung Ergebnis Startvorgang
|
||||
$erg = $treiber.stopservice()
|
||||
} # Abschluss Pruefung, ob Treiber bereits gestoppt
|
||||
|
||||
if($erg.returnvalue -eq "0")
|
||||
{
|
||||
Write-Host -ForegroundColor green "Treiber" $treiber.name "wurde gestoppt"
|
||||
}
|
||||
else
|
||||
{
|
||||
# Fehlermeldung, da Ergebnis -ne 0 ist -> d. h. Treiber konnte nicht gestartet werden:
|
||||
Write-Host -ForegroundColor Red "Treiber" $treiber.name "konnte nicht gestoppt werden"
|
||||
Write-Host -ForegroundColor Red "Fehler-Nummer" $erg.returnvalue
|
||||
} # Abschluss Pruefung, ob Treiber korrekt gestartet wurde
|
||||
} # Ende Stop
|
||||
} # Ende switch
|
||||
} # Ende Abarbeitung Treiber existiert
|
||||
} # Ende Pruefung wenn Treiber angegeben
|
||||
} # Ende end
|
||||
} # Ende function set-sysdriver
|
||||
|
||||
function falscheeingabe
|
||||
{
|
||||
Write-Host -ForegroundColor blue -backgroundcolor yellow "Folgende Eingaben beim naechsten Mal beruecksichtigen: "
|
||||
write-host -ForegroundColor blue -backgroundcolor yellow "-> set-sysdriver treiber, status "
|
||||
Write-Host -ForegroundColor blue -backgroundcolor yellow "-> set-sysdriver pc,treiber,status "
|
||||
}
|
||||
|
||||
#zur Erfolgskontrolle:
|
||||
"Das Commandlet fuer die Systemtreiber wurde erfolgreich geladen"
|
||||
Reference in New Issue
Block a user