Jump to content

PS, Rat für write-host auf Bildschirm


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Ich hab mich mal an die Hausaufgabe gemacht,

 

hier das Ergebnis:

 

#Hallo World mit while
#Powershell Console Definieren

#Console definieren
$h=get-host

#Console Farben
$win = $h.UI.RawUI
$Color = "Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green","Cyan","Red","Magenta","Yellow","White"
$Color.Length

$i=0
$j=15

while ($i -lt 16)

{
$win.BackgroundColor = $Color[$i]
$win.ForegroundColor = $Color[$j]

#Console Buffergrösse
$win_buffersize=$win.buffersize
$win_buffersize.height=5499
$win_buffersize.width=180
$h.ui.rawui.set_buffersize($win_buffersize)

#Console Fenstergrösse
$win_size=$win.windowsize
$win_size.height=15
$win_size.width=180
$h.ui.rawui.set_windowsize($win_size)

#Bereinigen des Bildschirms
# clear-host

#Prüfen ob Fehler gemeldet wurden (entspricht dem %errorlevel% aus MSDOS)
$LastExitCode 


write-Host "Hello World" 
write-host $i $j  
read-host 
$i++ 
$j--
}

 

Es gibt aber eine Fehlermeldung:

 

Bei C:\1\Hallo.ps1:29 Zeichen:11

+ $win_size. <<<< height=15

+ CategoryInfo : InvalidOperation: (height:String) [], RuntimeException

+ FullyQualifiedErrorId : PropertyNotFound

 

Die width-Eigenschaft wurde in diesem Objekt nicht gefunden. Stellen Sie sicher, dass sie vorhanden ist und festgelegt werden kann.

Bei C:\1\Hallo.ps1:30 Zeichen:11

+ $win_size. <<<< width=180

+ CategoryInfo : InvalidOperation: (width:String) [], RuntimeException

+ FullyQualifiedErrorId : PropertyNotFound

 

Das Argument "0" mit dem Wert "" für "set_WindowSize" kann nicht in den Typ "System.Management.Automation.Host.Size" konvertiert werden: "NULL kann nicht in den Typ "System.Manag

ement.Automation.Host.Size" konvertiert werden."

Bei C:\1\Hallo.ps1:31 Zeichen:27

+ $h.ui.rawui.set_windowsize <<<< ($win_size)

+ CategoryInfo : NotSpecified: (:) [], MethodException

+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

Geschrieben

Hier die zweite Version:

 

[#HalloWorld2.ps1 mit do-while

#Powershell Console Definieren

 

#Console definieren

$h=get-host

 

#Console Farben

$win = $h.UI.RawUI

$Color = "Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green","Cyan","Red","Magenta","Yellow","White"

$Color.Length

 

$i=0

$j=15

 

do

 

{

$win.BackgroundColor = $Color[$i]

$win.ForegroundColor = $Color[$j]

 

#Console Buffergrösse

$win_buffersize=$win.buffersize

$win_buffersize.height=5499

$win_buffersize.width=180

$h.ui.rawui.set_buffersize($win_buffersize)

 

#Console Fenstergrösse

$win_size=$win.windowsize

$win_size.height=15

$win_size.width=180

$h.ui.rawui.set_windowsize($win_size)

 

#Bereinigen des Bildschirms

# clear-host

 

#Prüfen ob Fehler gemeldet wurden (entspricht dem %errorlevel% aus MSDOS)

$LastExitCode

 

 

write-Host "Hello World"

write-host $i $j

read-host

$i++

$j--

} while ($i -lt 16)/CODE]

Geschrieben

Die nächste:

 

#HalloWorld mit for
#Powershell Console Definieren

#Console definieren
$h=get-host

#Console Farben
$win = $h.UI.RawUI
$Color = "Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green","Cyan","Red","Magenta","Yellow","White"
$Color.Length


$j=15

for ($i=0; $i -lt 16; $i++)

{
$win.BackgroundColor = $Color[$i]
$win.ForegroundColor = $Color[$j]

#Console Buffergrösse
$win_buffersize=$win.buffersize
$win_buffersize.height=5499
$win_buffersize.width=180
$h.ui.rawui.set_buffersize($win_buffersize)

#Console Fenstergrösse
$win_size=$win.windowsize
$win_size.height=15
$win_size.width=180
$h.ui.rawui.set_windowsize($win_size)

#Bereinigen des Bildschirms
# clear-host

#Prüfen ob Fehler gemeldet wurden (entspricht dem %errorlevel% aus MSDOS)
$LastExitCode 


write-Host "Hello World" 
write-host $i $j  
read-host
$j--
}

Geschrieben

$Color = "Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green ","Cyan","Red","Magenta","Yellow","White"

 

sowas is fad. Die Liste will ich von der PS selbst geliefert bekommen ;)

Geschrieben

Und hier mit foreach:

 

#
$Color = "Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green","Cyan","Red","Magenta","Yellow","White"

foreach ($element in $color)
{
write-host $element
}
read-host

Geschrieben
$Color = "Black","DarkBlue","DarkGreen","DarkCyan","DarkRed","DarkMagenta","DarkYellow","Gray","DarkGray","Blue","Green ","Cyan","Red","Magenta","Yellow","White"

 

sowas is fad. Die Liste will ich von der PS selbst geliefert bekommen ;)

 

Ich hätte es ja ahnen müssen, Du machst es mir nicht einfach. :)

 

Ich müsste es also die Synopsis von write-host auslesen?

Geschrieben
nnnene,

Du sollst die Werte der .Net Klasse [system.ConsoleColor] auflisten (=Enum erieren)

 

Da ich keinen blassen Schimmer, habe ich googled und gefunden: [system.Enum]::GetNames([system.ConsoleColor])

 

Ich werde das mal in ein Skript einbauen.

Geschrieben

Hier das Skript; ist das eine befriedigende Lösung zur Stellung der Aufgabe?

 

#HalloWorld_5.ps1
#Powershell Console Definieren

#Console definieren
$h=get-host

#Console Farben
$win = $h.UI.RawUI

$i=0
$j=15
while ($i -lt 16) {

$win.BackgroundColor = [system.Enum]::GetNames([system.ConsoleColor])[$i]
$win.ForegroundColor = [system.Enum]::GetNames([system.ConsoleColor])[$j]

#Console Buffergrösse
$win_buffersize=$win.buffersize
$win_buffersize.height=5499
$win_buffersize.width=180
$h.ui.rawui.set_buffersize($win_buffersize)

#Console Fenstergrösse
$win_size=$win.windowsize
$win_size.height=15
$win_size.width=180
$h.ui.rawui.set_windowsize($win_size)

#Bereinigen des Bildschirms
clear-host

#Prüfen ob Fehler gemeldet wurden (entspricht dem %errorlevel% aus MSDOS)
$LastExitCode 

write-Host $i $win.BackgroundColor
write-host $j $win.ForegroundColor
write-Host "Hello World" 
read-host 
$i++ 
$j--
}

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...