lionnn
Goto Top

Benötige Hilfe für PowerShell-Aufgabe

Hallo zusammen,
Ich habe ein paar Aufgaben über PowerShell bekommen. Hier unten ist die Aufgabe :

Ordner erstellen

Ziel des Programms: Es wird ein Ordner erstellt
Rahmenbedingungen: 1. Der User wird aufgefordert, einen Namen für den Ordner einzugeben. Das soll so oft wiederholt werden, bis effektiv ein
Name eingegeben wurde
2. Der User wird aufgefordert, einen Speicherpfad für den Ordner einzugeben
3. Wird kein oder ein falscher Pfad angegeben, wird standardmässig das aktuelle Verzeichnis als Speicherpfad verwendet
4. Standardausgaben von Befehlen sollen nicht angezeigt werden. Stattdessen sollen dort wo sinnvoll benutzerdefinierte
Ausgaben erfolgen
Zielüberprüfung: Der Ordner heisst wie gewünscht und befindet sich am definierten Speicherort. Das Programm wird fehlerfrei ausgeführt und
kann nicht zum Absturz gebracht werden. Es werden benutzerdefinierte Meldungen ausgegeben

Ich habe die Aufgabe so gelöst :

dok1

Kann jemand schauen, ob ich richtig gemacht habe oder nicht.

Vielen Dank
lionnn

Content-ID: 1362764217

Url: https://administrator.de/forum/benoetige-hilfe-fuer-powershell-aufgabe-1362764217.html

Ausgedruckt am: 21.04.2025 um 19:04 Uhr

149569
149569 07.10.2021 aktualisiert um 15:01:39 Uhr
Goto Top
ob ich richtig gemacht habe oder nicht.
Nö. Dringend nochmal aufmerksam die Aufgabenstellung und Bedingungen alle durchlesen! Davon wurden so ca. 90% nicht erfüllt. Hausaufgaben sind dazu da das man sie nicht von einem Forum lösen lässt sondern um sich selbst damit intensiv zu beschäftigen und selbst eine Lösung zu erarbeiten!

Rahmenbedingungen: 1. Der User wird aufgefordert, einen Namen für den Ordner einzugeben. Das soll so oft wiederholt werden, bis effektiv ein Name eingegeben wurde
Fehlt.
Stichwort Read-Host und Schleifen in Powershell
2. Der User wird aufgefordert, einen Speicherpfad für den Ordner einzugeben
Fehlt.
Stichwort Read-Host
3. Wird kein oder ein falscher Pfad angegeben, wird standardmässig das aktuelle Verzeichnis als Speicherpfad verwendet
Fehlt.
Stichwort Test-Path
4. Standardausgaben von Befehlen sollen nicht angezeigt werden. Stattdessen sollen dort wo sinnvoll benutzerdefinierte Ausgaben erfolgen
Fehlt.
Stichwort -ErrorAction SilentlyContinue oder auch Try-Catch und out-null

Zielüberprüfung: Der Ordner heisst wie gewünscht und befindet sich am definierten Speicherort. Das Programm wird fehlerfrei ausgeführt und kann nicht zum Absturz gebracht werden. Es werden benutzerdefinierte Meldungen ausgegeben
Fehlt.
Stichwort write-host

Für Powershell-Anfänger empfiehlt sich folgende Seite
Powershell - Leitfaden für Anfänger
mbehrens
mbehrens 07.10.2021 um 15:11:34 Uhr
Goto Top
Zitat von @lionnn:

Kann jemand schauen, ob ich richtig gemacht habe oder nicht.

Nein, alle Aufgabenpunkte wurden nicht erfüllt.
aqui
aqui 07.10.2021 um 15:30:56 Uhr
Goto Top
erikro
erikro 07.10.2021 um 17:59:45 Uhr
Goto Top
Moin,

Zitat von @149569:

Zielüberprüfung: Der Ordner heisst wie gewünscht und befindet sich am definierten Speicherort. Das Programm wird fehlerfrei ausgeführt und kann nicht zum Absturz gebracht werden. Es werden benutzerdefinierte Meldungen ausgegeben
Fehlt.

Stimmt. Es fehlt die Fehlerüberprüfung mittels Regex, ob der User denn einen gültigen Namen eingegeben hat. Anders ausgedrückt: Eine Regex, die prüft, ob verbotene Zeichen in der Eingabe enthalten sind. Sonst stürzt das Programm mit einer Fehlermeldung ab.

Stichwort write-host

Write-host ist Pfui. face-wink Write-output und write-error sind die richtige Wahl.

Liebe Grüße

Erik
149569
149569 07.10.2021 aktualisiert um 18:18:45 Uhr
Goto Top
Zitat von @erikro:
Write-host ist Pfui. face-wink Write-output und write-error sind die richtige Wahl.
Kommt wie immer darauf an! Write-Output braucht man nur wenn man etwas an eine Variable oder aus einer Funktion zurückgeben möchte, Write-Error wenn man einen benutzerdefinierten Fehler generieren möchte (glaube so weit ist der TO dann doch noch nicht face-smile). Write-Host halt wenn es nur einfache Konsolen-Ausgaben ohne viel Kladeradatsch oder Datenrückgabe sein soll. Auf die Definition und Umsetzung kommt es halt an was die richtige Wahl ist.
erikro
erikro 07.10.2021 um 18:36:36 Uhr
Goto Top
Moin,

Zitat von @149569:

Zitat von @erikro:
Write-host ist Pfui. face-wink Write-output und write-error sind die richtige Wahl.
Kommt wie immer darauf an! Write-Output braucht man nur wenn man etwas an eine Variable oder aus einer Funktion zurückgeben möchte,

Der wesentliche Unterschied ist, dass write-output ein Objekt zurückgibt, welches man auch so behandeln kann. Und alles, was das nicht macht, ist in einer OO-Sprache Pfui. Das heißt ja nicht, dass man es nicht trotzdem benutzen kann. face-wink Aber Anfängern sollte man write-host verbieten.

Write-Error wenn man einen benutzerdefinierten Fehler generieren möchte (glaube so weit ist der TO dann doch noch nicht face-smile).

Steht doch aber in der Aufgabe:
4. Standardausgaben von Befehlen sollen nicht angezeigt werden. Stattdessen sollen dort wo sinnvoll benutzerdefinierte Ausgaben erfolgen

Das interpretiere ich so, dass auch Fehlermeldungen abgefangen und sinnvoll ersetzt werden sollen. Und die schreibt man in Error und nicht in Standard. Außerdem werden sie dann so hübsch rot und sehen richtig professionell aus. face-wink

Write-Host halt wenn es nur einfache Konsolen-Ausgaben ohne viel Kladeradatsch oder Datenrückgabe sein soll. Auf die Definition und Umsetzung kommt es halt an was die richtige Wahl ist.

Ich meine das wirklich ernst mit dem Verbieten für Anfänger. Gut, der TO weiß es jetzt nach dem Thread. Der darf dann wieder. Aber ich haben jahrelang PS für Anfänger unterrichtet. Da habe ich die Erfahrung gemacht, dass das mit dem write-host am anfang keine gute Idee ist. Dann entdecken sie vielleicht das hier:

irgendein-befehl | tee $output

und versuchen dann

write-host "Meine tolle Fehlermeldung" | tee $logfile  

und wundern sich, dass zwar auf dem Bildschirm die Ausgabe erscheint wie gewohnt, im Log aber nie was drinsteht. Und dann werden die Fehler gesucht und gesucht und gesucht und er wird nie gefunden. face-wink

Liebe Grüße

Erik