meta data for this page
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung | |||
| guide:its12:powershell-anwenderwissen [2022/09/20 22:25] – Inhalt erstellt juergenhaas | guide: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 | + | Versuche |
| - | + | ||
| - | ==== Teil 1 ==== | + | |
| - | + | ||
| - | Erstellen Sie ein Powershell-Skript, | + | |
| - | - zuerst den Computernamen, | + | |
| - | - 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 ('' | + | |
| - | + | ||
| - | + | ||
| - | ==== Teil 2 ==== | + | |
| - | + | ||
| - | Erstellen Sie ein Powershell-Skript, | + | |
| - | * 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, | + | |
| - | + | ||
| - | __Code-Abschnitt zur Überprüfung ob ein Ordner existiert__ | + | |
| - | <code powershell> | + | |
| - | $path = Read-Host -Prompt "Pfad angeben" | + | |
| - | if (-Not (Test-Path -Path $path)) | + | |
| - | { | + | |
| - | echo " | + | |
| - | throw ' | + | |
| - | } | + | |
| - | + | ||
| - | if (-Not ($(Get-Item -Path $path) -is [System.IO.DirectoryInfo])) | + | |
| - | { | + | |
| - | echo " | + | |
| - | throw ' | + | |
| - | } | + | |
| - | echo " | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | __Code-Abschnitt mit einer Funktion, welche überprüft, | + | |
| - | <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-Abschnitt mit dem Grundgerüst für das Skript__ | + | |
| - | <code powershell> | + | |
| - | $action = Read-Host -Prompt " | + | |
| - | if ($action -eq " | + | |
| - | { | + | |
| - | # Hash-Werte berechnen und sichern | + | |
| - | } | + | |
| - | elseif ($action -eq " | + | |
| - | { | + | |
| - | # Hash-Werte laden und prüfen | + | |
| - | } | + | |
| - | else | + | |
| - | { | + | |
| - | echo "Keine Auswahl getroffen. Abbruch." | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | __Code-Abschnitt für das Sichern der Hash-Werte__ | + | |
| - | <code powershell> | + | |
| - | $path = Read-Host " | + | |
| - | + | ||
| - | $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-Abschnitt für das Prüfen der Hash-Werte__ | + | |
| - | <code powershell> | + | |
| - | $path = Read-Host -Prompt " | + | |
| - | + | ||
| - | $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 " | + | |
| - | } | + | |
| - | }) | + | |
| - | </ | + | |