CONTENTS IN DETAIL - No Starch Press

CONTE NT S IN DE TA IL

ACKNOWLEDGMENTS

xix

INTRODUCTION

xxi

Why PowerShell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii

Who This Book Is For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii

About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii

PART I: FUNDAMENTALS

1

1

GETTING STARTED

Opening the PowerShell Console . . . . . .

Using DOS Commands . . . . . . . . . . . . .

Exploring PowerShell Commands . . . . . .

Getting Help . . . . . . . . . . . . . . . . . . . . .

Displaying the Docs . . . . . . . . .

Learning About General Topics .

Updating the Docs . . . . . . . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . .

3

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Variables . . . . . . . . . . . . . . . . . . . . . . . . . . .

Displaying and Changing a Variable .

User-Defined Variables . . . . . . . . . . .

Automatic Variables . . . . . . . . . . . . .

Data Types . . . . . . . . . . . . . . . . . . . . . . . . . .

Boolean Values . . . . . . . . . . . . . . . .

Integers and Floating Points . . . . . . .

Strings . . . . . . . . . . . . . . . . . . . . . .

Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Inspecting Properties . . . . . . . . . . . . .

Using the Get-Member cmdlet . . . . . .

Calling Methods . . . . . . . . . . . . . . .

Data Structures . . . . . . . . . . . . . . . . . . . . . . .

Arrays . . . . . . . . . . . . . . . . . . . . . .

ArrayLists . . . . . . . . . . . . . . . . . . . .

Hashtables . . . . . . . . . . . . . . . . . . .

Creating Custom Objects . . . . . . . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

2

BASIC POWERSHELL CONCEPTS

. 4

. 4

. 6

. 8

. 8

. 9

10

11

13

13

14

14

16

19

20

20

21

23

24

25

25

26

26

29

31

33

35

3

COMBINING COMMANDS

37

Starting a Windows Service . . . . . . . . . . . . .

Using the Pipeline . . . . . . . . . . . . . . . . . . . .

Piping Objects Between Commands .

Piping Arrays Between Commands . .

Looking at Parameter Binding . . . . .

Writing Scripts . . . . . . . . . . . . . . . . . . . . . .

Setting the Execution Policy . . . . . . .

Scripting in PowerShell . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

CONTROL FLOW

47

Understanding Control Flow . . . . . . . . . . . . . . . . .

Using Conditional Statements . . . . . . . . . . . . . . . .

Building Expressions by Using Operators .

The if Statement . . . . . . . . . . . . . . . . . . .

The else Statement . . . . . . . . . . . . . . . . .

The elseif Statement . . . . . . . . . . . . . . . .

The switch Statement . . . . . . . . . . . . . . .

Using Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . .

The foreach Loop . . . . . . . . . . . . . . . . . .

The for Loop . . . . . . . . . . . . . . . . . . . . .

The while Loop . . . . . . . . . . . . . . . . . . .

The do/while and do/until Loops . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

5

ERROR HANDLING

Working with Exceptions and Errors . . . .

Handling Nonterminating Errors . . . . . . .

Handling Terminating Errors . . . . . . . . . .

Exploring the $Error Automatic Variable .

Summary . . . . . . . . . . . . . . . . . . . . . . .

48

49

49

50

51

51

52

54

54

57

58

58

59

61

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

WRITING FUNCTIONS

Functions vs. Cmdlets . . . . . . . . . . . . . . . . . . . . .

Defining a Function . . . . . . . . . . . . . . . . . . . . . .

Adding Parameters to Functions . . . . . . . . . . . . .

Creating a Simple Parameter . . . . . . . . .

The Mandatory Parameter Attribute . . . .

Default Parameter Values . . . . . . . . . . .

Adding Parameter Validation Attributes .

xii???Contents in Detail

37

38

38

39

40

42

42

44

46

62

63

64

66

67

69

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

70

70

71

72

73

74

74

Accepting Pipeline Input . . . . . . . . . . . . . . . . . . . .

Adding Another Parameter . . . . . . . . . . .

Making the Function Pipeline Compatible .

Adding a process Block . . . . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

EXPLORING MODULES

79

Exploring Default Modules . . . . . . . . . . . . . .

Finding Modules in Your Session . . .

Finding Modules on Your Computer .

Importing Modules . . . . . . . . . . . . .

The Components of a PowerShell Module . . .

The .psm1 File . . . . . . . . . . . . . . . .

The Module Manifest . . . . . . . . . . .

Working with Custom Modules . . . . . . . . . .

Finding Modules . . . . . . . . . . . . . .

Installing Modules . . . . . . . . . . . . .

Uninstalling Modules . . . . . . . . . . .

Creating Your Own Module . . . . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

RUNNING SCRIPTS REMOTELY

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

TESTING WITH PESTER

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

80

80

81

82

84

84

84

86

86

87

88

88

89

91

Working with Scriptblocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Using Invoke-Command to Execute Code on Remote Systems .

Running Local Scripts on Remote Computers . . . . . . . . . . . . .

Using Local Variables Remotely . . . . . . . . . . . . . . . . . . . . . .

Working with Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Creating a New Session . . . . . . . . . . . . . . . . . . . . . . . . . . .

Invoking Commands in a Session . . . . . . . . . . . . . . . . . . . . .

Opening Interactive Sessions . . . . . . . . . . . . . . . . . . . . . . .

Disconnecting from and Reconnecting to Sessions . . . . . . . . .

Removing Sessions with Remove-PSSession . . . . . . . . . . . . . .

Understanding PowerShell Remoting Authentication . . . . . . . . . . . . . . .

The Double Hop Problem . . . . . . . . . . . . . . . . . . . . . . . . . .

Double Hopping with CredSSP . . . . . . . . . . . . . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Introducing Pester . . . . . . . .

Pester Basics . . . . . . . . . . . .

A Pester File . . . . .

The describe Block

The context Block . .

The it Block . . . . . .

Assertions . . . . . . .

Executing a Pester Test . . . . .

Summary . . . . . . . . . . . . . .

76

76

77

77

78

. 92

. 93

. 94

. 95

. 96

. 97

. 98

. 98

. 99

101

101

102

103

105

107

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

108

108

108

109

109

110

110

111

112

Contents in Detail???xiii

PART II: AUTOMATING DAY-TO-DAY TASKS

113

10

PARSING STRUCTURED DATA

CSV Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Reading CSV Files . . . . . . . . . . . . . . . . . . . . . . . . . . .

Creating CSV Files . . . . . . . . . . . . . . . . . . . . . . . . . . .

Project 1: Building a Computer Inventory Report . . . . . .

Excel Spreadsheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Creating Excel Spreadsheets . . . . . . . . . . . . . . . . . . . .

Reading Excel Spreadsheets . . . . . . . . . . . . . . . . . . . .

Adding to Excel Spreadsheets . . . . . . . . . . . . . . . . . . .

Project 2: Creating a Windows Service Monitoring Tool .

JSON Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Reading JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Creating JSON Strings . . . . . . . . . . . . . . . . . . . . . . . .

Project 3: Querying and Parsing a REST API . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

117

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

138

138

139

139

141

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

141

143

143

145

146

149

150

150

151

153

155

156

11

AUTOMATING ACTIVE DIRECTORY

Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Installing the ActiveDirectory PowerShell Module . . . . . . . . . . . . .

Querying and Filtering AD Objects . . . . . . . . . . . . . . . . . . . . . .

Filtering Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Returning Single Objects . . . . . . . . . . . . . . . . . . . . . . .

Project 4: Finding User Accounts That Haven¡¯t Changed

Their Password in 30 Days . . . . . . . . . . . . . . . . . .

Creating and Changing AD Objects . . . . . . . . . . . . . . . . . . . . .

Users and Computers . . . . . . . . . . . . . . . . . . . . . . . . .

Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Project 5: Creating an Employee Provisioning Script . . . .

Syncing from Other Data Sources . . . . . . . . . . . . . . . . . . . . . . .

Project 6: Creating a Syncing Script . . . . . . . . . . . . . . .

Mapping Data Source Attributes . . . . . . . . . . . . . . . . .

Creating Functions to Return Similar Properties . . . . . . . .

Finding Matches in Active Directory . . . . . . . . . . . . . . .

Changing Active Directory Attributes . . . . . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

137

12

WORKING WITH AZURE

Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Azure Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Creating a Service Principal . . . . . . . . . . . . . . . . . . . . .

Noninteractively Authenticating with Connect-AzAccount .

Creating an Azure Virtual Machine and All Dependencies . . . . . . .

Creating a Resource Group . . . . . . . . . . . . . . . . . . . . . .

Creating the Network Stack . . . . . . . . . . . . . . . . . . . . . .

xiv???Contents in Detail

118

118

122

123

126

126

127

128

129

131

131

132

134

136

157

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

157

158

158

160

161

161

162

Creating a Storage Account . . . . . . . . . . . . .

Creating the Operating System Image . . . . . .

Wrapping Up . . . . . . . . . . . . . . . . . . . . . . .

Automating the VM Creation . . . . . . . . . . . . .

Deploying an Azure Web App . . . . . . . . . . . . . . . . . .

Creating an App Service Plan and Web App .

Deploying an Azure SQL Database . . . . . . . . . . . . . . .

Creating an Azure SQL Server . . . . . . . . . . . .

Creating the Azure SQL Database . . . . . . . . .

Creating the SQL Server Firewall Rule . . . . . . .

Testing Your SQL Database . . . . . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

WORKING WITH AWS

Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . .

AWS Authentication . . . . . . . . . . . . . . . . . . . . .

Authenticating with the Root User . . . . . .

Creating an IAM User and Role . . . . . . .

Authenticating Your IAM User . . . . . . . .

Creating an AWS EC2 Instance . . . . . . . . . . . . .

The Virtual Private Cloud . . . . . . . . . . .

The Internet Gateway . . . . . . . . . . . . . .

Routes . . . . . . . . . . . . . . . . . . . . . . . . .

Subnet . . . . . . . . . . . . . . . . . . . . . . . .

Assigning an AMI to Your EC2 Instance .

Wrapping Up . . . . . . . . . . . . . . . . . . .

Deploying an Elastic Beanstalk Application . . . . .

Creating the Application . . . . . . . . . . . .

Deploying a Package . . . . . . . . . . . . . .

Creating a SQL Server Database in AWS . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

164

164

166

167

167

167

168

168

169

170

171

172

173

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

CREATING A SERVER INVENTORY SCRIPT

Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Creating the Project Script(s) . . . . . . . . . . . . . . . . . . . . . . .

Defining the Final Output . . . . . . . . . . . . . . . . . . . . . . . . .

Discovery and Script Input . . . . . . . . . . . . . . . . . . . . . . . .

Querying Each Server . . . . . . . . . . . . . . . . . . . . . . . . . . .

Thinking Ahead: Combining Different Types of Information .

Querying Remote Files . . . . . . . . . . . . . . . . . . . . . . . . . . .

Querying Windows Management Instrumentation . . . . . . . .

Disk Free Space . . . . . . . . . . . . . . . . . . . . . . . . .

Operating System Information . . . . . . . . . . . . . . .

Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Network Information . . . . . . . . . . . . . . . . . . . . . .

Windows Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Script Cleanup and Optimization . . . . . . . . . . . . . . . . . . .

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

174

174

174

175

177

178

178

179

180

180

181

182

184

184

186

188

191

193

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

194

194

194

194

196

196

199

201

202

202

203

205

208

210

212

Contents in Detail???xv

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download