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 " | + | |
- | } | + | |
- | }) | + | |
- | </ | + | |