Monadjemi | Anteil EPB | E-Book | www2.sack.de
E-Book

E-Book, Deutsch, 368 Seiten

Reihe: X.systems.press

Monadjemi Anteil EPB

Eine kompakte und praxisorientierte Einführung
2017
ISBN: 978-3-658-17666-2
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark

Eine kompakte und praxisorientierte Einführung

E-Book, Deutsch, 368 Seiten

Reihe: X.systems.press

ISBN: 978-3-658-17666-2
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark



Das Praxisbuch stellt die Windows PowerShell in der aktuellsten Version als vielseitiges Werkzeug für die Administration von Windows Server 2008 R2/2012/2012 R2 und Windows Server 2016 vor. Es richtet sich an Administratoren, die sich bereits mit der PowerShell auskennen und ihr Wissen an aktuellen Themen vertiefen wollen. Es beschreibt zunächst die Kernkonzepte der PowerShell wie Typen, Objekte, stellt die mit der Version 5.0 dazu gekommenen Klassen vor, und gibt einen Überblick über Advanced Functions und Module. Danach werden fortgeschrittenere Themen wie Debuggen, die Umwandlung von Texten in Objekte und das Testen von Skripten mit Pester vorgestellt. Ein weiterer Schwerpunkt ist das Thema DevOps, das bei der PowerShell zum einen über die Desired State Configuration (DSC) adressiert wird, zum anderen über moderne Bereitstellungsmechanismen von Modulen und Ressourcen im Rahmen einer Release-Pipeline. Anwendungsorientierte Themen wie die Administration eines Active Directory, Azure-Dienste, Empfehlungen für gute Skripte und ein wenig Spaß, der beim Arbeiten mit der PowerShell, wie bei jeder Shell auch, dazu gehören sollte, runden das Buch ab.

Peter Monadjemi ist ein erfahrener IT-Trainer und Entwickler, der die PowerShell seit der ersten Version kennt und intensiv nutzt. Seine Schwerpunkte sind das Automatisieren administrativer Abläufe und die Software-Entwicklung mit .NET und .NET Core.

Monadjemi Anteil EPB jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


1;Windows Server-Administration mit PowerShell 5.1;4
1.1;Eine kompakte und praxisorientierte Einführung;4
1.2;Impressum;5
1.3;Vorwort;6
1.3.1;Open Source und PowerShell „on every System“;7
1.3.2; Was lesen Sie in diesem Buch?;7
1.3.3; Die Beispiele zu diesem Kapitel;8
1.3.4; Kontakt zum Autor;8
1.3.5; Danksagungen;8
1.4;Inhaltsverzeichnis;9
2;1: PowerShell für Kurzentschlossene;18
2.1;1.1 Das WMF im Überblick;18
2.2;1.2 Die .NET-Laufzeit;20
2.2.1;1.2.1 Assemblys;20
2.3;1.3 Die Objekt-Pipeline;22
2.4;1.4 PSProvider und PSDrives;23
2.4.1;1.4.1 Dynamische Parameter;24
2.5;1.5 Functions, Aliase, Workflows und Configurations;25
2.6;1.6 Erweiterbarkeit;25
2.6.1;1.6.1 Ein Modulmanager in Gestalt des PowerShellGet-Moduls;27
2.7;1.7 Befehlssyntax;28
2.8;1.8 Die moderne Konsole;29
2.9;1.9 Hilfe;30
2.10;1.10 Andere Plattformen;31
3;2: Der Umgang mit Typen;32
3.1;2.1 Alles ist ein Objekt;32
3.1.1;2.1.1 Objekte basieren auf Typen;32
3.1.2;2.1.2 Den Typ eines Objekts herausfinden;33
3.2;2.2 Typen als Objekte;33
3.3;2.3 Die Typen eines Arrays erhalten;34
3.3.1;2.3.1 Auflisten der Konstruktoren einer Klasse;34
3.4;2.4 Neue Objekte anlegen mit dem New-Object-Cmdlet;36
3.4.1;2.4.1 Neue Objekte anlegen über die statische Methode New;36
3.4.2;2.4.2 Objekte mit Argumenten anlegen;36
3.4.3;2.4.3 Neue Objekte anlegen per [PSCustomObject];37
3.5;2.5 Objektschreibweise;37
3.6;2.6 Das versteckte Member PSObject;38
3.7;2.7 Typen erweitern;38
3.8;2.8 Objekte erweitern über das Add-Member-Cmdlet;40
3.9;2.9 Typen definieren über externen Code;41
3.9.1;2.9.1 Zusammenfassung;43
4;3: Klassen definieren mit dem class-Befehl;44
4.1;3.1 Einleitung;44
4.1.1;3.1.1 Befehlswörter für die Definition von Klassen;45
4.2;3.2 Klassen definieren;45
4.3;3.3 Hinzufügen von Eigenschaften;46
4.4;3.4 Aus Klassen Objekte machen;48
4.5;3.5 Statische Member;48
4.6;3.6 Enumerationen;49
4.7;3.7 Aus Klassen werden Objekte;50
4.8;3.8 Klassen mit einem Konstruktor;51
4.8.1;3.8.1 Konstruktor mit Parameter;52
4.8.2;3.8.2 Versteckte Members;52
4.8.3;3.8.3 Überladene Konstruktoren;54
4.8.4;3.8.4 Klassen mit einem statischen Konstruktor;55
4.9;3.9 Methoden definieren;55
4.9.1;3.9.1 Methoden überladen;57
4.9.2;3.9.2 Statische Methoden;58
4.10;3.10 Klassen ableiten (Vererbung);59
4.10.1;3.10.1 Ableiten mit einem Konstruktor, der nicht parameterlos ist;61
4.10.2;3.10.2 Ableiten von Klassen der .NET-Klassenbibliothek und der PowerShell-Bibliotheken;62
4.10.3;3.10.3 Members überschreiben;62
4.11;3.11 Typenformatierung mit eigenen Klassen;66
4.12;3.12 Zusammenfassung;68
5;4: Functions für Fortgeschrittene;69
5.1;4.1 Was macht eine Function „Advanced“?;69
5.1.1;4.1.1 Die Rolle der Attribute;69
5.1.2;4.1.2 Das Prinzip der Parameter-Zuordnung;70
5.2;4.2 Das CmdletBinding-Attribut;71
5.3;4.3 Das Parameter-Attribut;72
5.4;4.4 Die Parameterbindung im Detail;73
5.4.1;4.4.1 Wenn die Parameterbindung nicht funktioniert;74
5.4.2;4.4.2 Die Parameterbindung sichtbar machen;75
5.5;4.5 Functions mit Pipeline-Parametern;75
5.6;4.6 Functions, die die Pipeline abarbeiten;77
5.7;4.7 Functions mit einer eingebauten Bestätigungsanforderung;78
5.7.1;4.7.1 Die Auswirkung des Confirm-Parameters;79
5.7.2;4.7.2 Die Auswirkung des WhatIf-Parameters;79
5.7.3;4.7.3 Implementieren von Confirm und WhatIf an einem Beispiel;79
5.7.4;4.7.4 Eine Bestätigungsanforderung unabhängig von Confirm & Co;82
5.8;4.8 Parameter-Validierung;83
5.8.1;4.8.1 Einen Bereich validieren mit ValidateRange;83
5.8.2;4.8.2 Eine Auswahlmenge validieren mit ValidateSet;83
5.8.3;4.8.3 Ein beliebiges Kriterium validieren per ValidateScript;83
5.8.4;4.8.4 Credential-Parameter implementieren;84
5.8.5;4.8.5 Eigene Parameterattribute definieren;84
5.9;4.9 Dynamische Parameter;85
5.10;4.10 Zusammenfassung;87
6;5: Aus Functions und Skripte werden Module;88
6.1;5.1 Module und Modultypen;88
6.1.1;5.1.1 Skriptmodule;89
6.1.2;5.1.2 Manifestmodule;89
6.1.3;5.1.3 Binärmodule;89
6.1.4;5.1.4 Dynamische Module;90
6.1.5;5.1.5 Weitere Modulverzeichnisse hinzufügen;91
6.2;5.2 Manifestmodule im Detail;91
6.3;5.3 Verschachtelte Module;93
6.4;5.4 Mehrere Versionen eines Moduls verwenden;93
6.5;5.5 Internationale Module – Zeichenketten in Psd1-Dateien auslagern;94
6.5.1;5.5.1 Die Rolle der Kultur und das CultureInfo-Objekt;96
6.5.2;5.5.2 Ändern der aktuellen Kultur;97
6.6;5.6 Praxisteil: Erstellen eines Manifestmoduls;98
6.7;5.7 Zusammenfassung;100
7;6: PowerShell-Skripte testen mit Pester;101
7.1;6.1 Was testet Pester?;101
7.1.1;6.1.1 Testen und DevOps;102
7.2;6.2 Das Pester-Modul im Überblick;102
7.3;6.3 Die ersten Schritte mit Pester;103
7.4;6.4 Einen Test-Rahmen mit New-Fixture anlegen;106
7.5;6.5 Test-Ergebnisse vergleichen mit Should – die Rolle der Assertions;107
7.6;6.6 PowerShell-Commands nachbilden über Mocks;109
7.6.1;6.6.1 Feststellen, ob ein Mock-Command ausgeführt wurde;111
7.7;6.7 Tests in einen Ablauf einbeziehen;111
7.8;6.8 Testen als (Lebens-)Philosophie;111
7.9;6.9 Zusammenfassung;112
8;7: Skripte und Module bereitstellen;113
8.1;7.1 Die PowerShell-Paketverwaltung im Überblick;113
8.1.1;7.1.1 Ein Blick hinter die Kulissen;114
8.1.2;7.1.2 Überblick über das PackageManagement-Modul;117
8.1.3;7.1.3 Die ersten Schritte mit der Paketverwaltung;117
8.1.4;7.1.4 Anwendungspakete über Chocolatey installieren;117
8.1.5;7.1.5 Package-Provider offline installieren;121
8.1.6;7.1.6 Das PowerShellGet-Modul für die Modul- und Skriptverwaltung;121
8.1.7;7.1.7 Die ersten Schritte mit PowerShellGet;121
8.2;7.2 Eigene Ablagen für Module und Skripte einrichten;123
8.2.1;7.2.1 Skripte über GitHub als „Gists“ abrufen;126
8.2.2;7.2.2 Repository statt Webverzeichnis;126
8.2.3;7.2.3 Einrichten eines Modul-Repositorys mit MyGet;127
8.2.4;7.2.4 Skripte und Module in der PowerShell Gallery veröffentlichen;129
8.3;7.3 Arbeiten mit einer Versionsverwaltung;131
8.3.1;7.3.1 Schritt für Schritt;132
8.3.2;7.3.2 Git-Integration in Visual Studio Code;140
8.4;7.4 Aufsetzen einer Release-Pipeline für Module;143
8.4.1;7.4.1 Was genau ist eine Release-Pipeline?;143
8.4.2;7.4.2 Wo gibt es die Release-Pipeline?;144
8.4.3;7.4.3 Eine Release-Pipeline selber gebaut;145
8.4.4;7.4.4 Eine Release-Pipeline mit AppVeyor;148
8.4.5;7.4.5 Die ersten Schritte mit AppVeyor;149
8.4.6;7.4.6 Die Anatomie der Yaml-Datei;150
8.4.7;7.4.7 Ein PowerShell-Modul per AppVeyor bereitstellen;151
8.5;7.5 Zusammenfassung;153
9;8: DSC-Grundlagen;154
9.1;8.1 Ein erstes Beispiel;154
9.2;8.2 Ein wenig Theorie;161
9.2.1;8.2.1 MOF;161
9.2.2;8.2.2 DSC-Spracherweiterungen;162
9.2.3;8.2.3 Die Rolle der Ressourcen;162
9.2.4;8.2.4 Der Local Configuration Manager (LCM);163
9.2.5;8.2.5 Pull statt Push;164
9.3;8.3 Verwenden von Konfigurationsdaten;165
9.4;8.4 Warum DSC?;167
9.5;8.5 Zusammenfassung;167
10;9: DSC in der Praxis;169
10.1;9.1 Auspacken von Zip-Dateien;169
10.2;9.2 Umgebungsvariablen anlegen;170
10.3;9.3 Dateien und Verzeichnisse anlegen;172
10.4;9.4 Lokale Benutzer und Gruppen anlegen;173
10.5;9.5 Registry-Schlüssel anlegen;174
10.6;9.6 Windows-Feature installieren;176
10.7;9.7 Prozesse starten;176
10.8;9.8 Systemdienste einrichten;177
10.9;9.9 DSC-Log-Meldungen schreiben;178
10.10;9.10 Beliebige Befehle ausführen;180
10.11;9.11 Einen Webserver einrichten;181
10.12;9.12 Eine Hyper-VM einrichten;185
10.13;9.13 Zusammenfassung;186
11;10: DSC für (etwas) Fortgeschrittene;187
11.1;10.1 Hinzufügen von DSC-Ressourcen;187
11.2;10.2 Ressourcenabhängigkeiten festlegen;188
11.3;10.3 Den LCM konfigurieren;189
11.4;10.4 Umgang mit Konfigurationsdaten;190
11.4.1;10.4.1 Konfigurationsdaten unterschiedliche Nodes zuordnen;191
11.4.2;10.4.2 Einzelne Nodes auswählen;192
11.4.3;10.4.3 Allgemeine Eigenschaften in den Konfigurationsdaten festlegen;193
11.4.4;10.4.4 Konfigurationsdaten, die nur allgemeine Einstellungen enthalten;194
11.4.5;10.4.5 Konfigurationsdaten mit strukturierten Werten;195
11.5;10.5 Kennwörter in einer Konfiguration verwenden;196
11.6;10.6 Einrichten eines Pull Servers;201
11.6.1;10.6.1 Überblick über das Einrichten eines Pull Servers;202
11.6.2;10.6.2 Einrichten eines webbasierten Pull Servers;202
11.6.3;10.6.3 Umstellen des LCM auf den Pull-Modus;207
11.6.4;10.6.4 Einen Pull Server testen;208
11.6.5;10.6.5 Die Rolle der Reportserver;209
11.7;10.7 DSC-Diagnose;209
11.8;10.8 Eigene Ressourcen definieren;211
11.8.1;10.8.1 Zusammengesetzte Ressourcen (Composite Resources);215
11.9;10.9 Die PowerShell DSC-Cmdlets im Überblick;218
11.10;10.10 Zusammenfassung;220
12;11: Aus Text Objekte machen;221
12.1;11.1 Texte im CSV-Format konvertieren;222
12.2;11.2 Überschriften nachträglich hinzufügen oder vorhandene Überschriften ändern;223
12.3;11.3 Unregelmäßige Texte zerlegen;223
12.3.1;11.3.1 Texte mit dem Split-Operator zerlegen;223
12.3.2;11.3.2 Texte mit Hilfe regulärer Ausdrücke zerlegen;225
12.4;11.4 Objekte anlegen;227
12.4.1;11.4.1 Objekte mit dem New-Object-Cmdlet anlegen;227
12.4.2;11.4.2 Objekte mit einer Hashtable anlegen;228
12.4.3;11.4.3 Unregelmäßige Textdaten mit dem ConvertFrom-String-Cmdlet verarbeiten;228
12.4.4;11.4.4 XML-Daten verarbeiten;229
12.5;11.5 JSON-Daten verarbeiten;232
12.6;11.6 Zusammenfassung;233
13;12: Active Directory-Administration;234
13.1;12.1 AD DS und Domänencontroller einrichten;235
13.1.1;12.1.1 Aktualisieren der Hilfe;236
13.1.2;12.1.2 Authentifizierung;236
13.2;12.2 Suche nach Benutzerkonten per Get-AdUser;237
13.3;12.3 Die PowerShell-Abfragesyntax;237
13.3.1;12.3.1 Benutzerkonten auswählen über den Identity-Parameter;237
13.3.2;12.3.2 Die Rolle des Properties-Parameter bei Get-ADUser;238
13.3.3;12.3.3 Spezialfall zusammengesetzte Attribute;239
13.3.4;12.3.4 Eingrenzen der Suche;239
13.3.5;12.3.5 Suchen nach anderen AD-Objekten;239
13.4;12.4 Benutzer anlegen per New-AdUser;240
13.4.1;12.4.1 Benutzerkonten aktivieren;241
13.4.2;12.4.2 Benutzerkonten über eine CSV-Datei anlegen;241
13.5;12.5 Benutzerkonten ändern per Set-ADUser;241
13.5.1;12.5.1 Umgang mit Mehrwert-Attributen;242
13.6;12.6 Benutzerkonten löschen mit Remove-ADUser;242
13.7;12.7 Nach Kontenattributen suchen;243
13.8;12.8 Gruppenzugehörigkeiten verwalten;243
13.8.1;12.8.1 Nicht alles passt zusammen;244
13.9;12.9 Computerkonten abfragen per Get-AdComputer;245
13.10;12.10 Abfrageergebnisse mit Out-GridView kombinieren;245
13.11;12.11 Umgang mit Organisationseinheiten;246
13.12;12.12 Das AD-Laufwerk;246
13.13;12.13 Den AD-Papierkorb aktivieren;247
13.14;12.14 Einen AD LSD oder Open LDAP-Server ansprechen;248
13.15;12.15 Zusammenfassung;249
14;13: Azure-Administration per PowerShell;250
14.1;13.1 Ein erster Überblick;250
14.2;13.2 Der ARM im Überblick;251
14.2.1;13.2.1 Die Rolle der Resource Provider;251
14.2.2;13.2.2 Die Rolle der Templates;252
14.3;13.3 Zugriffssteuerung per BPAC;259
14.4;13.4 Die Azure PowerShell im Überblick;260
14.4.1;13.4.1 Abfragen der PowerShell-Version;260
14.4.2;13.4.2 Ein erster Überblick;261
14.4.3;13.4.3 Die ersten Schritte mit der Azure PowerShell;261
14.4.4;13.4.4 Beispiele aus der Praxis;263
14.4.5;13.4.5 Eine virtuelle Maschine über ein Template anlegen;268
14.4.6;13.4.6 Azure und DSC;269
14.5;13.5 Custom Script Extension als Alternative zu DSC;273
14.6;13.6 Zusammenfassung;276
15;14: Debugging für etwas Fortgeschrittene;277
15.1;14.1 Unsichtbare Variablen beim Debuggen;277
15.2;14.2 Der Debug-Modus im Überblick;278
15.3;14.3 Über das Wesen eines Haltepunktes;278
15.3.1;14.3.1 Allgemeine Haltepunkte setzen;278
15.3.2;14.3.2 Haltepunkt entfernen und deaktivieren;279
15.3.3;14.3.3 Haltepunkte für einen Befehl setzen;279
15.3.4;14.3.4 Haltepunkte für eine Variable setzen;279
15.3.5;14.3.5 Haltepunkte mit einer Bedingung verknüpfen;280
15.3.6;14.3.6 Ein Skript ohne Haltepunkte debuggen;280
15.4;14.4 Remote-Debugging von Skripten;280
15.4.1;14.4.1 Haltepunkte über Invoke-Command setzen;281
15.5;14.5 Einen Workflow debuggen;281
15.6;14.6 Runspaces debuggen;281
15.7;14.7 Zusammenfassung;283
16;15: Sicherheit;284
16.1;15.1 Die Rolle der Ausführungsrichtlinie;284
16.2;15.2 Umgang mit Credentials;285
16.2.1;15.2.1 Einen Secure String lesbar machen;287
16.2.2;15.2.2 Einen Secure String anlegen;288
16.2.3;15.2.3 Secure String-Dateien sicher speichern;288
16.3;15.3 Umgang mit Zertifikaten;289
16.4;15.4 Weiterer Umgang mit Zertifikaten;290
16.4.1;15.4.1 Auflisten bestimmter Zertifikate;290
16.5;15.5 Zertifikate anlegen;290
16.5.1;15.5.1 Selbstsignierte Zertifikate erstellen;291
16.6;15.6 Skripte signieren;294
16.7;15.7 Zeichenketten verschlüsseln;295
16.7.1;15.7.1 Texte verschlüsseln und entschlüsseln mit CipherNet;295
16.7.2;15.7.2 Zeichenketten mit Zertifikaten verschlüsseln;296
16.8;15.8 Umgang mit Zugriffsberechtigungen;297
16.8.1;15.8.1 Entfernen von Zugriffsberechtigungen;299
16.9;15.9 Die Befehlsausführung protokollieren;300
16.9.1;15.9.1 Befehlsprotokollierung per Gruppenrichtlinien steuern;300
16.9.2;15.9.2 Mehr Möglichkeiten bei Start-Transcript;302
16.10;15.10 PowerShell-Remoting-Endpunkte sichern mit Just Enough Administration (JEA);303
16.10.1;15.10.1 JEA in der Praxis;304
16.11;15.11 Eine Session ohne Remoting einschränken;307
16.12;15.12 Das Invoke-Expression-Cmdlet und warum es potentiell gefährlich ist;308
16.12.1;15.12.1 Invoke-Expression per Scriptblock-Logging überwachen;309
16.13;15.13 Zusammenfassung;310
17;16: PowerShell für Linux;311
17.1;16.1 Ein erster Überblick;311
17.2;16.2 PowerShell unter Linux installieren;312
17.3;16.3 Die ersten Schritte unter Linux;313
17.4;16.4 Navigieren im Dateisystem;313
17.5;16.5 PowerShell-Remoting mit SSH;313
17.6;16.6 PowerShell versus PowerShell Core;315
17.7;16.7 Zusammenfassung;315
18;17: Wie man gute Skripte schreibt;316
18.1;17.1 Kommentare;316
18.2;17.2 Variableninitialisierung erzwingen;316
18.3;17.3 Aliase vermeiden;317
18.4;17.4 Datentypen für Parameter;317
18.5;17.5 Keine „Spuren“ hinterlassen;317
18.6;17.6 Der PSScriptAnalyzer;318
18.6.1;17.6.1 Eigene Regeln definieren;318
18.7;17.7 Zusammenfassung;320
19;18: Spaß mit der PowerShell;321
19.1;18.1 Zufallszahlen;321
19.2;18.2 Farbige Ausgaben;323
19.2.1;18.2.1 Farbe in der Konsole dank VT100-Unterstützung;324
19.3;18.3 Ein etwas anderer Prompt;326
19.3.1;18.3.1 Ein farbiger Prompt;327
19.4;18.4 Sounddateien abspielen;328
19.4.1;18.4.1 Systemso unds abspielen;328
19.4.2;18.4.2 Töne erzeugen;329
19.4.3;18.4.3 PowerShell-Musik;331
19.5;18.5 Die PowerShell lernt sprechen;331
19.5.1;18.5.1 Die .NET-Laufzeit kann auch sprechen;332
19.6;18.6 ASCII-Art und die 80er-Jahre;333
19.6.1;18.6.1 Bewegte ASCII-Art;333
19.7;18.7 Ein Zitat, bitte;334
19.7.1;18.7.1 Einen Internet-Zeitserver abfragen;335
19.8;18.8 Ein Matrix-Style-Bildschirmschoner;336
19.9;18.9 HAL ist IBM – der unwiderlegbare Beweis;336
19.10;18.10 April, April;336
19.11;18.11 Ein Spielhallenklassiker;338
19.12;18.12 Zusammenfassung;338
20;19: PowerShell für Entwickler;339
20.1;19.1 Unterschiede und Gemeinsamkeiten mit C#;339
20.2;19.2 Umgang mit Assemblys;340
20.3;19.3 Assemblys in eine PowerShell-Sitzung laden;341
20.3.1;19.3.1 Assemblys über ihren Pfad laden;342
20.3.2;19.3.2 Assemblys über ihren Namen laden;342
20.3.3;19.3.3 Alle geladenen Assemblys auflisten;343
20.3.4;19.3.4 Klassendefinitionen sichtbar machen;344
20.3.5;19.3.5 Den Inhalt einer Assembly sichtbar machen;344
20.4;19.4 Assemblys erstellen;346
20.4.1;19.4.1 Herunterladen von NuGet-Packages;347
20.5;19.5 Umgang mit generischen Typen;347
20.5.1;19.5.1 Generische Listen;348
20.5.2;19.5.2 Generische Methodenaufrufe;348
20.5.3;19.5.3 Aufruf einer generischen privaten Methode;349
20.6;19.6 Umgang mit Events;350
20.7;19.7 Das erweiterbare Typensystem;352
20.8;19.8 Cmdlets definieren;353
20.9;19.9 Benutzeroberflächen mit WPF;355
20.10;19.10 Win32-API-Funktionen aufrufen;359
20.11;19.11 Zusammenfassung;360
21;Glossar;361
22;Stichwortverzeichnis;364



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.