User Tools

Site Tools


woche_2_-_microsoft_windows_server_kurs

Woche 2 - Microsoft Windows Server Kurs

Tag 1: 17.02.2025 Montag

  • Kapitel 9. Skripting, Functions, Filter
    • Agenda
      • …
  • Get-PSDrive
    • Laufwerk “Function”
  • Function
    • Liste von existierenden PowerShell-Befehlen mit einem Namen versehen (=Funktionsname), die dann in der Eingabeaufforderung ausgeführt werden kann
    • Functions können über Parameter verfügen
    • Functions sind ein Teil des Skriptings
# gibt eine Liste der Funtionen, Aliases, Cmdlets etc.
Get-Command
# Funktion definieren
Function <FunctionName>
{
  <Anweisungsblock>
  
}
# Funktion aufrufen
<FunctionName> [-Parameter1 [Wert1]] [-ParameterN [WertN]] 
  • Beispiel:
# 
Function Get-DiskDrive
{
  Get-PSDrive -PSProvider FileSystem
}
  • dann Skript speichern z.B. unter “MeineSkripte\MeineFunktionen.ps1”
  • die Skript-Datei MUSS ausgeführt werden, damit die dort definierten Funktionen in der aktuellen Session verfügbar werden
> MeineSkripte\MeineFunktionen.ps1
> # ab jetzt sind alle dort definierten Functions verfügbar
  • eine Ausführung von Skripten ist aber standardmäßig verboten (Ausnahme “Administrator”?)
# Abfragen (auf der Konsole) ob eine Ausführung erlaubt ist:
Get-ExecutionPolicy
# Setzen:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
# Es gibt RemoteSigned / Unrestricted / AllSigned ...
  • bei der Ausführung MUSS der Pfad angegeben werden (sowie DOT-Sourcing → MUSS)
. .\MeineFunktionen.ps1
  • Funktionen mit Parametern erstellen
# klassisch:
Function <Name>
{
  Param ($Parameter1[, $ParameterN])
  
  <Anweisungsblock>
}

# Neu (funktioniert nur bei Functions aber nicht bei Skriptenparametern):
Function <Name> [($Parameter1[, $ParameterN])] 
{
  
  <Anweisungsblock>
}
  • Beispiel
Function Get-LargeFiles ($Length)
{
  Get-ChildItem C:\Windows | Where-Object {$_.Length -ge $Length}  
}

# Mit Werten vorbelegen
Function Get-LargeFiles ($Location="C:\Windows", $Length=200)
{
  Get-ChildItem $Location | Where-Object {$_.Length -ge $Length}  
}
  • Zeilen trennen mit Backticks (ab PowerShell 5.0, kann man auch ohne Backticks)
Function Get-MyProcess ($Length)
{
  Get-Process -Name s* | `
  Select -Property ID, ProcessName, CPU | `
  Sort -Property CPU -Descending
}
  • Switch-Parameter
    • Parameter ohne Wert
    • wenn vorhanden = TRUE
Function Test-Switch ([switch]$AnAus)
{
  if($AnAus) {
    # ...
  }
  else {
    # ...
  }
}
  • Beispiel
Function Get-LargeFiles ($groesse, [switch]$sortieren)
{
  $ausgabe = Get-ChildItem -Path C:\Windows -File | Where { $_.Length -ge $groesse}
  if($sortieren) {
    $ausgabe | Sort -Property Length
  }
  else {
    $ausgabe
  }
}
  • Objekte über Pipeline an Funktionen übergeben
Function <Name> 
{
  Begin
  {
    # Anweisungsblock, der am Anfang ausgeführt wird
  }
  Process
  {
    # Anweisungsblock, der mit jedem Element ausgeführt wird
  }
  End
  {
    # Anweisungsblock, der am Ende ausgeführt wird
  }
}
  • Beispiel
Function Get_Pipe1
{
  Begin
  {
    # Anweisungsblock, der am Anfang ausgeführt wird
    Write-Host "Pipeline Funktion gestartet"
  }
  Process
  {
    # Anweisungsblock, der mit jedem Element ausgeführt wird
    Write-Host "Wert des aktuellen Objektes $_."
  }
  End
  {
    # Anweisungsblock, der am Ende ausgeführt wird
    Write-Host "Pipeline Funktion zu Ende ausgeführt"
  }
}
 
# Aufruf:
1,2,3 | Get_Pipe1
  • Objekte kann man auch über Pipeline an Skripte übergeben
  Begin
  {
    # Anweisungsblock, der am Anfang ausgeführt wird
    Write-Host "Pipeline Funktion gestartet"
  }
  Process
  {
    # Anweisungsblock, der mit jedem Element ausgeführt wird
    Write-Host "Wert des aktuellen Objektes $_."
  }
  End
  {
    # Anweisungsblock, der am Ende ausgeführt wird
    Write-Host "Pipeline Funktion zu Ende ausgeführt"
  }
 
  # Aufruf (jede Datei/Directory in C:\Windows wird an das Skript myPipeScript.ps1 übergeben)
  Get-ChildItem C:\Windows | .\myPipeScript.ps1
  • “Dokumentationstags”
<#
.SYNOPSIS
Kurzbeschreibung...  
 
.DESCRIPTION
Ausführliche Beschreibung...  
 
.PARAMETER
Beschreibung Parameter 1...  
 
.PARAMETER
Beschreibung Parameter 2...  
 
.EXAMPLE
Beispiel 1...  
 
.EXAMPLE
Beispiel 2...  
 
.NOTES
Notizen...  
 
.LINK
...  
 
#>
  • Da die Funktionen auf dem virtuelle Laufwerk Function: sind:
    • Auflisten aller Funktionen kann man machen mit:
      • Get-ChildItem Function:
    • …
      • …
    • Löschen
      • Remove-Item …
  • Kapitel 7. Profile
    • Thema “Profile” hat man zurückgestellt, da sie besser NACH den “Funktionen” passt
  • Profil als “Gedächtnis” der PowerShell
    • Eigene Aliase
    • Arbeitsumgebung (Farben etc…)
    • …
  • 2 getrennte Profile
    • “normale” PowerShell
    • ISE
  • $profile
    • gibt den Pfad zu der aktuellen Profil-Datei
    • Diese Datei wird bei jedem Start von PowerShell ausgeführt (so was wie “autoexec.bat”)
  • $HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    • für “normale” PowerShell Konsole
  • $HOME\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
  • Man kann dort auch eigene Skripte laden (über DOT-Skripting)
    • . C:\MeineSkripte\MeineFunktionen.ps1

Übung 9.14 (Seite 133)

Function Get-MyMessage
{
  Write-Host "Hier sind meine Funktionen gespeichert."
}
 
# Fügen Sie Ihrem Skript eine neue Funktion Get-MyProcess hinzu, die Prozesse auf Ihrem lokalen Rechner unter folgenden Bedingungen anzeigt:
#  Die anzuzeigenden Prozesse beginnen mit dem Buchstaben s.
#  Die Spalten ID, ProcessName und CPU sollen angezeigt werden.
#  Die Anzeige soll absteigend nach der Eigenschaft CPU sortiert werden.
# Speichern Sie Ihr Skript, führen Sie es erneut aus und testen Sie die Funktion.
 
Function Get-MyProcess
{
  Get-Process -Name s* | Select-Object ID, ProcessName, CPU | Sort-Object CPU -Descending
}
 
# Kopieren Sie die Funktion Get-MyProcess und fügen Sie sie unter dem Namen Get-MyProcess2
# in Ihr Skript ein. Wandeln Sie die Funktion wie folgt ab:
#  Die Funktion soll einen Parameter $FilterName akzeptieren, der bestimmt, welche Prozesse angezeigt werden. 
# Standardwert: Es sollen Prozesse angezeigt werden, deren Name mit dem Buchstaben s
# beginnt.
#  Über einen Switch-Parameter $Liste soll gesteuert werden, die Ausgabe als Liste zu sehen
# (Format-List) und nicht als Tabelle.
# Speichern Sie Ihr Skript, führen Sie es erneut aus und testen Sie die neue Funktion
 
Function Get-MyProcess2 ($FilterName="s", [switch] $Liste)
{
  $ausgabe =  Get-Process -Name "$FilterName*" | Select-Object ID, ProcessName, CPU | Sort-Object CPU -Descending
  if($Liste) {
    $ausgabe = $ausgabe | Format-List  
  }
 
  $ausgabe
}

Tag 2: 18.02.2025 Dienstag

  • AM WICHTIGSTEN: Gijaskin Geburtstag!!! :)

Und dann:

  • Benutzerverwaltung geschieht in SAM (=Security Account Manager)
    • GUI davon :
      • “Computerverwaltung” (Rechts auf “Windows”-Symbol in der Taskleiste klicken)
      • System / Lokale Benutzer und Gruppen / Benutzer
        • Einen Benutzer anschauen (e.g. “v.kalaschnikow”)
      • Um einen neuen Benutzer anlegen:
        • “Benutzer” mit rechts anklicken
          • “Neuer Benutzer”
  • In der PowerShell einen Benutzer anschauen mit Cmdlet Get-LocalUser
    • ⇒ dann werden nur die wichtigsten Eigenschaften angezeigt
    • Alle verfügbaren Eigenschaften anzeigen:
      • Get-LocalUser | Get-Member
  • In der PowerShell einen neuen Benutzer anlegen mit Cmdlet New-LocalUser
    • Pflicht:
      • Name
      • Kennwort
  • Debugging Modus in der PowerShell ISE:
  • Skript muss gespeichert werden
  • Menü “Debuggen”
  • F9 - Breakpoint toggeln
  • F11 - Einzelschritt
  • Wir starten mit “Windows Server Verwaltung” (⇒Thema “PowerShell” erstmal pausieren)
    • Buch von Nicole Laue verwenden
    • Wir fangen mit dem Kapitel 7 an: “Vom Einzelrechner zum Netzwerk: Grundlagen”
  • TCP/IP in der Praxis
    • Agenda
      • Allgemeine Netzwerkfunktionen
      • IP-Adressklassen
      • Multicasts
      • Private IP-Adressen
      • Gültige und ungültige individuellen IP-Adressen
        • ⇒ Übung (WICHTIG! evtl prüfungsrelvant)
      • Subnetting und Subnetzmasken
        • Adress-Segmentierung
      • Bestimmen der Anzahl der Subnetze
      • Bestimmen der Anzahl der Hosts pro Subnetz
      • Tools
      • Supernetting
      • Übungen
  • Allgemeine Netzwerkfunktionen
    • Vom Einzelrechner zum Netzwerk
      • Benutzer / Drucker / Scanner etc
        • geht lokal auf EINEM Einzelrechner
        • besser ist: GEMEINSAM Ressourcen nutzen
        • ⇒ Netzwerk notwendig
  • Richtlinien festlegen / Protokolle
    • Wer sendet
    • Was sendet
    • Wie die Daten aussehen
    • …
  • Unicast
    • Kommunikation zwischen 2 definierten Punkten
  • Broadcast
    • Rundsendung ohne eine definierte Zieladresse
  • Multicast
    • senden an eine zuvor definierte Multicast-Gruppe
    • Beispiel :
      • Updates verteilen
  • Switches
    • “Verteiler”, die angeschlossene Systeme einzeln erreichen können
    • 2 Arten
      • Hubs
        • haben keine “Verstärker”
      • Switches
        • haben “Verstärker”
    • heutzutage werden kaum Hubs verwendet
  • MAC-Adresse (Media Access Control)
    • eindeutig weltweit
    • “eingebrannt” in die Netzwerkkarte
    • 6 Hex-Doubletten
      • Bsp:
        • 00-02-B3-1A-A4-DC
      • die ersten 3 Doubletten: Kennung vom Hersteller
  • Netzwerkübertragung
    • physikalische Übertragung
      • CSMA/CD = Carrier Sense Multiple Access / Collision Detection
        • (N.B. irrelevant für die Prüfung)
    • logische Übertragung
      • TCP/IP Protokoll
  • TCP/IP ISO/OSI Modell
    • 7 Schichten
      • 7. Applicaiton Layer
      • 6. Presentation Layer
      • 5. Session Layer
      • 4. Transport Layer
      • 3. Network Layer
      • 2. Data Link Layer
      • 1. Physical Layer
  • TCP/IP
    • Familie von Protokollen
      • SMTP, FTP, HTTP, HTTPS, SNMP …
    • Ursprünglich 18, momentan ca. 50
  • ARP = Address Resolution Protocol
    • ARP - Request
      • “Ich bin <MyIP> mit MAC <MyMAC> und ich will mit <ZielIP> kommunizieren”
      • Wird über Broadcast gesendet
        • da Broadcast aufwendig ist, muss es so weit möglich reduziert werden
    • ARP-Response
      • wird vom angefragten System beantwortet
      • “Ich bin <IP> mit <MAC>”
      • Dann wird IP mit der MAC im IP-Cache vom Anfrager gespeichert
        • IP-Cache wird nach einer gewissen Zeit gelöscht (normalerweise ca. 1 Std)
  • Kapitel 8. IP-Adressierung
  • IP-Adresse
    • 4 Zahlen durch Kommata getrennt
      • Werte 0-255
    • Adressbereich (theoretisch)
      • von 0.0.0.0
      • bis 255.255.255.255
  • IP Adressklassen nach RFC 791
    • Klasse A
      • von 0.0.0.0 bis 127.255.255.255
      • Subnetzmaske 255.0.0.0
      • Startet mit 0 (binär)
      • 1 Byte - Netz Anteil
    • Klasse B
      • von 128.0.0.0 bis 191.255.255.255
      • Subnetzmaske 255.255.0.0
      • Startet mit 10 (binär)
      • 2 Bytes - Netz Anteil
    • Klasse C
      • von 192.0.0.0 bis 223.255.255.255
      • Subnetzmaske 255.255.255.0
      • Startet mit 110 (binär)
      • 3 Bytes - Netz Anteil
    • Klasse D
      • von 224.0.0.0 bis …
      • Subnetzmaske x.x.x.x
      • Startet mit 1110 (binär)
      • 2 Bytes - Netz Anteil
      • reserviert für Multicast
    • Klasse E
      • von 240.0.0.0 bis …
      • Subnetzmaske x.x.x.x
      • Startet mit 1111 (binär)
      • reserviert für Entwicklung, Forschung etc.
  • A,B,C Klassen werden kommerziell genutzt
  • D,E - speziell reserviert
  • Sonderregeln
    • im Host-Anteil dürfen nicht alle Bits auf 0 gesetzt werden
      • (das wäre dann eine Subnetzmaske)
    • im Host-Anteil dürfen nicht alle Bits auf 1 gesetzt werden
      • (das wäre dann eine Broadcast-Adresse)
    • das erste Byte müssen aus A, B oder C sein
  • Eine Subnetzmaske beginnt IMMER mit 1 (binär) und danach kommen NUR die 0
    • also 1111…000
    • so was wie 1110001110001100 ist nicht erlaubt
  • Broadcast:
    • alle Host-Bits sind auf 1 gesetzt
  • Multicast
    • “Gruppenadressen”
    • Multicasts werden geroutet (Broadcasts - nicht)
  • Warum IP-Adressen?
    • Warum Klassen, wenn Subnetzmaske definiert werden kann?
      • ⇒ aus historischen Gründen
  • Öffentliche und private IP-Adressen
    • Öffentliche - kann im Internet geroutet werden
    • Private - werden nicht im Internet weitergeleitet
    • NUR diese Adressen sind privat:
      • A Klasse
        • 10.0.0.0 - 10.255.255.255 (8 Netze)
      • B Klasse
        • 172.16.0.0 - 172.31.255.255 (12 Netze)
      • C Klasse
        • 192.168.0.0 - 192.168.255.255 (16 Netze)
    • Siehe auch “CIDR” (Classless Inter-Domain Routing)
  • Übung:
    • Welche Adressen sind gültig / nicht gültig und warum:
      • 131.107.256.80
        • nicht gültig
        • wg. 256
      • 222.222.255.222
        • gültig
      • 231.200.1.1
        • nicht gültig
        • Multicast
      • 198.121.254.255
        • nicht gültig
        • Broadcast
      • 126.1.0.0
        • gültig
      • 0.127.4.100
        • nicht gültig
        • wg. 0
      • 127.1.1.1
        • nicht gültig
        • (local host?)
      • 190.7.2.0
        • gültige B-Klasse
      • 255.255.255.255
        • nicht gültig
        • Broadcast
      • 1.0.0.1
        • gültige A-Klasse
      • 172.18.254.255
        • gültig B-Klasse
      • 1.255.0.0
        • gültig A-Klasse
  • Anzahl Hosts pro Subnetz für Klasse A
    • Anzahl Bits im Host-Anteil (s. Diagramm in der Präsentation von Michael) = 2^24 = 16.777.216
    • Minus 2 (im Host-Anteil stehen alle Bits auf 0 oder alle Bits stehen auf 1)
    • ⇒ 16.777.214
  • Anzahl Hosts pro Subnetz für Klasse B
    • Anzahl Bits im Host-Anteil (s. Diagramm in der Präsentation von Michael) = 2^16 = 65.536
    • Minus 2 (im Host-Anteil stehen alle Bits auf 0 oder alle Bits stehen auf 1)
    • ⇒ 65.534
  • Anzahl Hosts pro Subnetz für Klasse C
    • Anzahl Bits im Host-Anteil (s. Diagramm in der Präsentation von Michael) = 2^8 = 256
    • Minus 2 (im Host-Anteil stehen alle Bits auf 0 oder alle Bits stehen auf 1)
    • ⇒ 254
  • Zum Nachlesen:
    • Kapitel 7. Vom Einzelrechner zum Netzwerk: Grundlagen
    • Kapitel 8. Die IP-Adressierung
    • Präsentation von Michael (TCPIP-0225.pdf)

Tag 3: 19.02.2025 Mittwoch

  • Übungen zu der Berechnung von Subnetzen
    • …
  • 2 neue Rechner im Hyper-V Manager einrichten
    • W22DC01
      • Windows Server 2022 (Desktopdarstellung = “mit GUI”)
      • 10.0.1.1/24
      • Subnetzmaske 255.255.255.0
      • Administrator / Pa$$w0rt
    • W22DC02
      • Windows Server 2022 (Desktopdarstellung = “mit GUI”)
      • 10.0.1.2/24
      • Subnetzmaske 255.255.255.0
      • Administrator / Pa$$w0rt
  • …

Tag 4: 20.02.2025 Donnerstag

  • 2 neue Rechner im Hyper-V Manager einrichten
    • W22FS01 (File Server)
      • Windows Server 2022 (Desktopdarstellung = “mit GUI”)
      • 10.0.2.1/24
      • Subnetzmaske 255.255.255.0
      • Administrator / Pa$$w0rt
    • W11CL01 (Client)
      • Windows 11 Pro
      • 10.0.2.100/24
      • Subnetzmaske 255.255.255.0
      • 4 GB RAM (sonst lässt er sich nicht installieren)
        • danach kann man das im Hyper-V reduzieren
      • Pa$$w0rt
  • Router im Hype-V Manager erstellen
    • Windows Server 2022 (Desktopdarstellung = “mit GUI”)
    • W22RT01
      • Hardware hinzufügen
        • 2-te Netzwerkkarte hinzufügen (⇒ im Hyper-V Manager auf Eigenschaften des Rechners ⇒ Hardware hinzufügen)
          • 1-te = 10.0.1.254 / 24
            • Subnetzmaske 255.255.255.0
          • 2-te = 10.0.2.254 / 24
            • Subnetzmaske 255.255.255.0
      • Administrator / Pa$$w0rt

Tag 5: 21.02.2025 Freitag

  • Supernetting (nicht prüfungsrelevant)
    • …
  • NetBIOS
    • Namensauflösung in einer NICHT-hierarchischen Form
  • Agenda
  • Hosttabellen
  • DNS-Server konfigurieren
  • WINS
  • Tools
  • Übungen
  • Namensauflösung
    • A-Record (Host)
    • MX-Record (Mail)
    • TXT-Record
    • SRV-Record (Services)
    • …
  • Unter C:\Windows\System32\drivers\etc\lmhosts
    • Zuordnung IP → Name (über WINS?)
  • Unter C:\Windows\System32\drivers\etc\hosts
    • zum Testen, wenn man z.B. (DNS?)-Server nicht anfassen darf/kann
  • DNS = Domain Name System
    • Service
    • auch eigenes Protokoll im TCP/IP
  • Grundlagen
    • TTL - Time To Live
    • …
    • Top-Level Domains
      • com, gov, edu …
      • länderspezifische (de, es, ru,…)
      • neue (aero, info,…)
    • in-addr.arpa
      • Zuordnung IP → Name
        • (also andersrum)
  • Namensauflösung
  • kaskadierte DNS Systeme
  • Serverrollen
    • Primary
    • Secondary
    • Caching-Only-Server
  • Nachlesen im Buch 1 unter “Tag 9. Wie finden sich…”
  • Aufgabe (zusammen gelöst)
    • “W22DC01” als DNS-Server einrichten
      • Server Manager / Verwalten / Rollen und… hinzufügen
  • Stammhinweise
    • Liste der (.) Root-Server
      • 13 Stück(normalerweise/immer?)
  • Forward Lookup Zone erstellen
    • Primäre Zone
      • (auf dem primären Server→ primäre zone)
      • (auf dem sekundären Server→ sekundäre zone)
  • Reverse Lookup Zone erstellen
    • …
  • ipconfig /displaydns
    • DNS Cache anschauen
  • ipconfig /flushdns
    • DNS Cache löschen
  • ARP Cache UND DNS Cache am besten beide löschen, da veraltete Caches zu den Fehlern führen
  • Sekundären DNS Server auf W22DC02 installieren
    • …
woche_2_-_microsoft_windows_server_kurs.txt · Last modified: by kalaschnikow