-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Outline
Goal of the Book: This book is for those that want to develop the knowledge and skills required for a senior level automation or administration position. It will cover the concepts that will help you develop the mindset/lay the groundwork for best practices required for advanced topics, topics that are not always covered by other books. This book will use PowerShell as the primary tool used for examples of these concepts, but the examples are not limited to only PowerShell based solutions. Once you have read this book and understand the concepts contained within, you will be well prepared for many difficult and potentially senior level technical challenges. This book will be written as a textbook resource that universities/ engineers can reference/ incorporate into course material.
Target Audience: This book is intended to target engineers that have completed the "Month of Lunches" books (including the toolmaker book).
Vision: The vision of this book is to have a book that is written by the community for the community allowing community experts to directly facilitate the learning.
Platform: Leanpub using Markdown. Hard-copies will be published using Amazon.
Management: To ensure that technical accuracy is maintained, senior editors will provide quality control (across sections), where editors will focus on the content (spelling/ grammar) for each chapter.
Content:
Forward (Orin Thomas has agreed to write the forward) http://orinthomas.com/
Introduction:
- Similar format to the Powershell Conference Book, detailing what the profits of this book is going to.
- It will also detail the intended purpose for this book, outlying that the goal of this book is to serve as a deep dive best practices guide that focuses on the 'how-to' do things. It can serve as a study resource, as well as a lesson guide for training organizations.
PowerShell Security
Script Signing
- This chapter covers how to utilize PowerShell script signing to protect your code from tampering. Once covered, this chapter will demonstrate how to deploy 'trusted' signed certificates within a local environment.
Script Execution Policies
- This chapter is an in-depth deep dive discussing how script execution policies can be used and implemented.
Constrained Language Mode
- This chapter is an in-depth overview of what is constrained language mode (CLM) and it's implementations, using WDAC, AppLocker, and Software Restriction Policies. This chapter also will explore some limitations of CLM.
Just Enough Administration
- This chapter will be an extension on how to secure your PowerShell remoting endpoints using JEA policies. This chapter won't focus on PowerShell remoting per-say, rather the configuration requirements to secure the solution within the environment.
PowerShell Secrets and Azure KeyVault
- This chapter will explore how to implement PowerShell secrets within your environment. This chapter will also explore how to use Azure KeyVault to secure your cloud PowerShell Passwords. This chapter will also detail what best practices are to be followed by the environment.
- (We may want to consider the SecretManagement and SecretStore modules as well)
PowerShell Testing
The AAA Approach.
- This chapter will explore the Arrange, Act, and Assert and explaining the syntax of Pester testing.
Unit Testing.
- What is Unit Testing? Discuss use cases of when you would use unit testing.
Integration Testing.
- What is integration testing? Demonstrate use cases of when you would use integration testing.
Parameterized Testing.
- This chapter is devoted to demonstrating parameterized testing.
Mocking.
- This chapter is devoted to demonstrating to users how and when to mock for testing.
PowerShell in Depth
Advanced Conditions.
- This chapter will explain Advanced Conditions and give some practical implementations and use cases for these conditions. (-bor, Advanced usage of -like vs -match)
Using Regex.
- An introductory chapter demonstrating the syntax of regex and 'how' it processes strings. It will give some practical uses of regex. This chapter will demonstrate best practices when to use regex (Select-String, "[]", -match, -like)
Abstract Syntax Tree (AST).
- A simple chapter that demonstrates what the AST is and some typical use-cases for the AST.
Logging
- This chapter covers the basics of logging and its intended use. This chapter also lays the groundwork for establishing best practices that most script writers should implement.
Infrastructure as Code (IaC)
- This is an introductory chapter on DSC and it's use cases. This chapter covers the technical elements of Managed Object Format files (MOFs) and its future use cases.
Data Analytics.
(I have no idea here.)
Architecture and Design
Extensibility
- This chapter explores the concepts of how to architect your PowerShell scripts, functions, and modules for future use and reusability.
Refactoring PowerShell.
- This chapter explores the concepts of how to refactor your code using practical examples from internet code. Concepts such as: Using the pipeline to your advantage. Utilizing Where-Object and the where method to split and filter data structures. Taking splatting to the next level, showing practical solutions on how to refactor code to make it more maintainable and readable. This chapter will also spend some time with string formatting, laying the groundwork for some best practices.
Performance
- This chapter demonstrates key areas within PowerShell to make it more performant and when not to take it too far.
Practical Applications.
This chapter looks at the practical applications of PowerShell and how to use the engine to achieve what you want.
Collaboration
Code Review.
This chapter explores the process of performing code review (what to look for, ) Best practices used within the community.
Git
This chapter will introduce Git and how it can be used to store your code. It will cover typical Git commands with detailed explanations on what it is doing.
Publishing and Deploying your Code.
This chapter explores the different methods of deploying your code (Internally / Externally). This chapter will also demonstrate some best practices for deployments.
Afterword
(Yet to decide who will contribute to the afterword) ##