meta data for this page
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
guide:its12:powershell-anwenderwissen [2022/09/20 22:25] – Inhalt erstellt juergenhaasguide:its12:powershell-anwenderwissen [2023/09/11 19:14] (aktuell) – Aufgabe ausgelagert juergenhaas
Zeile 6: Zeile 6:
 ===== Empfohlene Lernstrategie ===== ===== Empfohlene Lernstrategie =====
  
-Versuchen Sie die folgenden Aufgabenstellungen unter Verwendung der angegebenen Hinweise umzusetzen. +Versuche die [[uebung:its12:powershell_anwender|Übung: Powershell-Anwenderwissen]] unter Verwendung der angegebenen Hinweise umzusetzen.
- +
-==== Teil 1 ==== +
- +
-Erstellen Sie ein Powershell-Skript, welches  +
-  - zuerst den Computernamen, den Namen des aktuellen Benutzers und dessen Anmeldedomäne ausgibt.  +
-  - Anschließend sollen alle lokalen Benutzer und alle lokalen Gruppen zur Übersicht ausgegeben werden.  +
-  - Als letztes soll das Skript ermitteln, ob der aktuelle Benutzer Mitglied der Administratorengruppe ist und das Ergebnis ausgeben. +
-(siehe dazu auch Umgebungsvariablen (''$env:'') und ''Select''+
- +
- +
-==== Teil 2 ==== +
- +
-Erstellen Sie ein Powershell-Skript, welches in der Lage ist Veränderungen an Dateien in einem Verzeichnis anhand derer Hash-Werte zu erkennen. +
-  * Gehen Sie von der Situation aus, dass ein Kollege Ihnen bereits unfertige Skript-Teile dafür zur Verfügung stellt oder dass Sie solche aus dem Internet zusammenkopiert haben. +
-  * Das fertige Skript soll zusätzlich folgende Eigenschaften erfüllen: +
-    * Zu Beginn soll auswählbar sein, ob man Dateien sichern oder prüfen möchte. +
-    * Wenn ein Dateisystemobjekt zur Überwachung angegeben wurde, das nicht existiert oder kein Verzeichnis ist, dann soll das Skript abgebrochen werden. +
-  * Fügen Sie die unten bereitgestellten Code-Abschnitte zu einem funktionierenden Skript zusammen und nehmen Sie wo notwendig Anpassungen und Ergänzungen vor. +
-  * Testen Sie Ihr Skript anschließend, indem Sie Dateien anlegen und anschließend auch verändern. +
- +
-__Code-Abschnitt zur Überprüfung ob ein Ordner existiert__ +
-<code powershell> +
-$path = Read-Host -Prompt "Pfad angeben" +
-if (-Not (Test-Path -Path $path)) +
-+
-    echo "$($path) existiert nicht. Abbruch.)" +
-    throw 'FileDoesNotExistError' +
-+
- +
-if (-Not ($(Get-Item -Path $path) -is [System.IO.DirectoryInfo])) +
-+
-    echo "$(path) ist kein Verzeichnis. Abbruch" +
-    throw 'ISNoDirectoryError' +
-+
-echo "OK" +
-</code> +
- +
- +
-__Code-Abschnitt mit einer Funktion, welche überprüft, ob der Hashwert einer anzugebenen Datei in einer Liste (Ausgabe von Get-FileHash) mit Datei-Hash-Werten enthalten ist__ +
-<code powershell> +
-function Check-Hash ($FilePath, $HashList) +
-+
-    $matched = $false +
-    $HashList.ForEach({ +
-        if ($FilePath -eq $_.Path) +
-        { +
-            $hash = Get-FileHash -Path $FilePath -Algorithm $_.Algorithm +
-            if ($hash.Hash -eq $_.Hash) +
-            { +
-                $matched = $true +
-            } +
-        } +
-    }) +
- +
-    return $matched +
-+
-</code> +
- +
- +
-__Code-Abschnitt mit dem Grundgerüst für das Skript__ +
-<code powershell> +
-$action = Read-Host -Prompt "Möchten Sie sichern oder prüfen? (s/p)" +
-if ($action -eq "s"+
-+
-    # Hash-Werte berechnen und sichern +
-+
-elseif ($action -eq "p"+
-+
-    # Hash-Werte laden und prüfen +
-+
-else +
-+
-    echo "Keine Auswahl getroffen. Abbruch." +
-+
-</code> +
- +
- +
-__Code-Abschnitt für das Sichern der Hash-Werte__ +
-<code powershell> +
-$path = Read-Host "Welches Verzeichnis soll überwacht werden?" +
- +
-$hashfile = Read-Host -Prompt "In welche Datei sollen die Hash-Werte geschrieben werden?" +
- +
-$hashes = Get-ChildItem -Path $path | Get-FileHash -Algorithm SHA1 +
- +
-$hashes | Export-Csv -Path $hashfile +
-</code> +
- +
- +
-__Code-Abschnitt für das Prüfen der Hash-Werte__ +
-<code powershell> +
-$path = Read-Host -Prompt "Welches Verzeichnis soll geprüft werden?" +
- +
-$hashfile = Read-Host -Prompt "Aus welcher Datei sollen die Hash-Werte gelesen werden?" +
- +
-$hashlist = Import-Csv -Path $hashfile +
- +
-$(Get-ChildItem -Path $path).ForEach({ +
-    $unchanged = Check-Hash -FilePath $_.FullName -HashList $hashlist +
-    if (-Not $unchanged) +
-    { +
-        Write-Host "$($_.FullName) wurde verändert." +
-    } +
-}) +
-</code>+