Windows Server 2012 Automation with PowerShell Cookbook - Ed Goad - E-Book

Windows Server 2012 Automation with PowerShell Cookbook E-Book

Ed Goad

0,0
44,39 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Automating server tasks allows administrators to repeatedly perform the same, or similar, tasks over and over again. With PowerShell scripts, you can automate server tasks and reduce manual input, allowing you to focus on more important tasks. Windows Server 2012 Automation with PowerShell Cookbook will show several ways for a Windows administrator to automate and streamline his/her job. Learn how to automate server tasks to ease your day-to-day operations, generate performance and configuration reports, and troubleshoot and resolve critical problems. Windows Server 2012 Automation with PowerShell Cookbook will introduce you to the advantages of using Windows Server 2012 and PowerShell. Each recipe is a building block that can easily be combined to provide larger and more useful scripts to automate your systems. The recipes are packed with examples and real world experience to make the job of managing and administrating Windows servers easier. The book begins with automation of common Windows Networking components such as AD, DHCP, DNS, and PKI, managing Hyper-V, and backing up the server environment. By the end of the book you will be able to use PowerShell scripts to automate tasks such as performance monitoring, reporting, analyzing the environment to match best practices, and troubleshooting.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 393

Veröffentlichungsjahr: 2013

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Windows Server 2012 Automation with PowerShell Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Instant Updates on New Packt Books
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Errata
Piracy
Questions
1. Understanding PowerShell Scripting
Introduction
Managing security on PowerShell scripts
How to do it...
How it works...
There's more...
Creating and using functions
How to do it...
How it works...
There's more...
Creating and using modules
How to do it...
How it works...
There's more...
See also
Creating and using PowerShell profiles
How to do it...
How it works...
There's more…
See also
Passing variables to functions
How to do it...
How it works...
There's more...
Validating parameters in functions
How to do it...
How it works...
There's more...
See also
Piping data to functions
How to do it...
How it works...
There's more...
Recording sessions with transcripts
How to do it...
How it works...
There's more...
See also
Signing PowerShell scripts
Getting ready
How to do it...
How it works...
There's more...
Sending e-mail
Getting ready
How to do it...
How it works...
There's more...
Sorting and filtering
How to do it...
How it works...
Using formatting to export numbers
How to do it...
How it works...
There's more...
See also
Using formatting to export data views
How to do it...
How it works...
Using jobs
How to do it...
How it works...
There's more...
See also
Dealing with errors in PowerShell
How to do it...
How it works...
There's more...
Tuning PowerShell scripts for performance
Getting ready
How to do it...
How it works...
There's more...
Creating and using Cmdlets
Getting ready
How to do it...
How it works...
There's more
See also
2. Managing Windows Network Services with PowerShell
Introduction
Configuring static networking
Getting ready
How to do it...
How it works...
There's more...
Installing domain controllers
Getting ready
How to do it...
How it works...
There's more...
Configuring zones in DNS
Getting ready
How to do it...
How it works...
There's more...
Configuring DHCP scopes
Getting ready
How to do it...
How it works...
There's more...
Configuring DHCP server failover
Getting ready
How to do it...
How it works...
Converting DHCP addresses to static
Getting ready
How to do it...
How it works...
There's more...
Building out a PKI environment
Getting ready
How to do it...
How it works...
There's more…
Creating AD users
Getting ready
How to do it...
How it works...
There's more...
See also
Searching for and reporting on AD users
How to do it...
How it works...
Finding expired computers in AD
How to do it...
How it works...
See also
Creating and e-mailing a superuser report
Getting ready
How to do it...
How it works...
There's more...
3. Managing IIS with PowerShell
Introduction
Installing and configuring IIS
Getting ready
How to do it...
How it works...
There's more...
Configuring IIS for SSL
Getting ready
How to do it...
How it works...
There's more...
Configuring a Central Certificate Store
Getting ready
How to do it...
How it works...
There's more...
See also
Configuring IIS bindings
How to do it...
How it works...
There's more...
See also
Configuring IIS logging
How to do it...
How it works...
Managing log files
Getting ready
How to do it...
How it works...
There's more...
Configuring NLB across multiple servers
Getting ready
How to do it...
How it works...
There's more...
Monitoring load balancing across NLB nodes
Getting ready
How to do it...
How it works...
There's more...
Placing NLB nodes into maintenance
Getting ready
How to do it...
How it works...
There's more...
Configuring a development/staging/production site scheme
Getting ready
How to do it...
How it works...
Promoting content in websites
Getting ready
How to do it...
How it works...
There's more...
Reporting on website access and errors
How to do it...
How it works...
There's more...
4. Managing Hyper-V with PowerShell
Introduction
Installing and configuring Hyper-V
Getting ready
How to do it...
How it works...
There's more...
Configuring NUMA
Getting Ready
How to do it...
How it works...
See also
Securing Hyper-V
Getting ready
How to do it...
How it works...
There's more...
Hyper-V networking
Getting ready
How to do it...
How it works...
There's more...
Creating virtual machines
Getting ready
How to do it...
How it works...
Managing VM state
Getting ready
How to do it...
How it works...
There's more...
Configuring VM networking
Getting ready
How to do it...
How it works...
There's more...
Configuring VM hardware
Getting ready
How to do it...
How it works...
Quickly deploying VMs using a template
Getting ready
How to do it...
How it works...
There's more...
See also
Managing and reporting on VM snapshots
Getting ready
How to do it...
How it works...
There's more...
Monitoring Hyper-V utilization and performance
Getting ready
How to do it...
How it works...
There's more...
Synchronizing networks between Hyper-V hosts
Getting ready
How to do it...
How it works...
Hyper-V replication
Getting ready
How to do it...
How it works...
See also
Migrating VMs between hosts
Getting ready
How to do it...
How it works...
See also
Migrating VM storage between hosts
Getting ready
How to do it...
How it works...
Using failover clustering to make VMs highly available
Getting ready
How to do it...
How it works...
There's more...
See also
5. Managing Storage with PowerShell
Introduction
Managing NTFS file permissions
Getting ready
How to do it...
Editing the permissions on an Excel spreadsheet
Cloning permissions for a new folder
Taking ownership and reassigning permissions
Enabling and disabling inheritance
How it works...
Managing NTFS alternate streams
Getting ready
How to do it...
How it works...
There's more...
Configuring NTFS deduplication
Getting ready
How to do it...
How it works...
There's more...
See also
Monitoring NTFS deduplication
Getting ready
How to do it...
How it works...
There's more...
Configuring storage pools
Getting ready
How to do it...
How it works...
There's more...
Reporting on storage pools
Getting ready
How to do it...
How it works...
There's more...
Managing file quotas
Getting ready
How to do it...
How it works...
There's more...
6. Managing Network Shares with PowerShell
Introduction
Creating and securing CIFS shares
Getting ready
How to do it...
How it works...
There's more...
See also
Accessing CIFS shares from PowerShell
Getting ready
How to do it...
How it works...
Creating iSCSI target and virtual disk
Getting ready
How to do it...
How it works...
There's more...
See also
Using a iSCSI disk
Getting ready
How to do it...
How it works...
There's more...
Configuring and using iSNS
Getting ready
How to do it...
How it works...
There's more...
See also
Creating an NFS export
Getting ready
How to do it...
How it works...
There's more...
See also
Mounting NFS exports
Getting ready
How to do it...
How it works...
There's more…
Making CIFS shares highly available
Getting ready
How to do it...
How it works...
See also
Configuring DFS and DFSR replication
Getting ready
How to do it...
How it works...
Configuring BranchCache
Getting ready
How to do it...
How it works...
There's more...
See also
7. Managing Windows Updates with PowerShell
Introduction
Installing Windows Server Update Services
Getting ready
How to do it...
How it works...
There's more...
See also
Configuring WSUS update synchronization
Getting ready
How to do it…
How it works…
There's more...
Configuring the Windows update client
Getting ready
How to do it...
How it works...
There's more...
See also
Creating computer groups
Getting ready
How to do it...
How it works...
Configuring WSUS auto-approvals
Getting ready
How to do it...
How it works...
Reporting missing updates
Getting ready
How to do it...
How it works...
There's more...
Installing updates
Getting ready
How to do it...
How it works...
There's more...
Uninstalling updates
Getting ready
How to do it...
How it works...
There's more...
Configuring WSUS to inventory clients
Getting ready
How to do it...
How it works...
There's more...
See also
Creating an update report
Getting ready
How to do it...
How it works...
There's more...
See also
Exporting WSUS data to Excel
Getting ready
How to do it...
How it works...
There's more...
8. Managing Printers with PowerShell
Introduction
Setting up and sharing printers
Getting ready
How to do it...
How it works...
Changing printer drivers
Getting ready
How to do it...
How it works...
Reporting on printer security
Getting ready
How to do it...
How it works...
Adding and removing printer security
Getting ready
How to do it...
How it works...
There's more...
Mapping clients to printers
Getting ready
How to do it...
How it works...
There's more...
Enabling Branch Office Direct Printing
Getting ready
How to do it...
How it works...
Reporting on printer usage
Getting ready
How to do it...
How it works...
There's more...
9. Troubleshooting Servers with PowerShell
Introduction
Testing if a server is responding
Getting started
How to do it...
How it works...
There's more...
Using troubleshooting packs
Getting ready
How to do it
How it works...
There's more...
Using Best Practices Analyzers
Getting started
How to do it...
How it works...
There's more...
Searching event logs for specific events
Getting started
How to do it...
How it works...
There's more...
Forwarding event logs to a central log server
Getting ready
How to do it...
How it works...
There's more...
10. Managing Performance with PowerShell
Introduction
Reading performance counters
Getting ready
How to do it...
How it works...
Configuring Data Collector Sets
Getting ready
How to do it...
How it works...
There's more...
Reporting on performance data
Getting ready
How to do it...
How it works...
There's more...
Generating graphs
Getting ready
How to do it...
How it works...
There's more...
Creating a server performance report
Getting ready
How to do it...
How it works...
11. Inventorying Servers with PowerShell
Introduction
Inventorying hardware with PowerShell
How to do it...
How it works...
There's more...
Inventorying the installed software
How to do it...
How it works...
Inventory system configuration
Getting ready
How to do it...
How it works...
There's more...
Reporting on system security
Getting ready
How to do it...
How it works...
Creating a change report
Getting ready
How to do it...
How it works...
There's more...
Exporting a configuration report to Word
Getting ready
How to do it...
How it works...
See also
12. Server Backup
Introduction
Configuring backup policies
Getting ready
How to do it...
How it works...
There's more...
See also
Initiating backups manually
Getting ready
How to do it...
How it works...
There's more...
Restoring files
Getting ready
How to do it...
How it works...
There's more...
Restoring Windows system state
Getting ready
How to do it...
How it works...
There's more...
Restoring application data
Getting ready
How to do it...
How it works...
There's more...
Creating a daily backup report
Getting ready
How to do it...
How it works...
Index

Windows Server 2012 Automation with PowerShell Cookbook

Windows Server 2012 Automation with PowerShell Cookbook

Copyright © 2013 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: March 2013

Production Reference: 1150313

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-84968-946-5

www.packtpub.com

Cover Image by Abhishek Pandey (<[email protected]>)

Credits

Author

Ed Goad

Reviewers

Anderson Patricio

Donabel Santos

Acquisition Editor

Kevin Colaco

Commissioning Editor

Shreerang Deshpande

Lead Technical Editor

Azharuddin Sheikh

Technical Editors

Ankita Meshram

Kirti Pujari

Varun Pius Rodrigues

Project Coordinator

Anugya Khurana

Proofreaders

Mario Cecere

Dirk Manuel

Indexer

Hemangini Bari

Graphics

Valentina D'silva

Production Coordinator

Conidon Miranda

Cover Work

Conidon Miranda

About the Author

Ed Goad is a Systems Architect who has been working in various roles in the IT field for 16 years. He first became interested in scripting and automation when presented with the task to uninstall software from over 1,000 systems with limited time and resources. He has worked with scripting and automation on multiple platforms and languages including PowerShell, VBscript, C#, and BASH scripting.

Ed currently holds multiple Microsoft certifications, most recently including the Microsoft Certified IT Professional—Enterprise Administrator. Additional non-Microsoft certifications include VMware Certified Professional (VCP), Red Hat Certified System Administrator (RHCSA), EMC Proven Professional, Brocade Certified Network Engineer (BCNE), and Cisco Certified Network Associate (CCNA).

Ed is currently on sabbatical, and is volunteering full time at the Amor Fe y Esperanza school in Honduras (http://www.afehonduras.org). There he is teaching computer and math classes to children who live and work in the garbage dump outside of the capital city of Tegucigalpa.

I would like to thank my parents for always encouraging me when I was younger by telling me that I could be anything that I wanted, as long as I had good math skills. They bought our first computer before I even started school, and then let me break it and repair it over and over, driving my interest in computers.

I want to thank my wife for loving me and encouraging me to grow and be more than I was. Without her love and encouragement my life wouldn't be nearly as full as it is now.

And lastly, I would like to thank God for his blessings and the opportunities he has given me. As much as I have learned and accomplished, it is nothing compared to knowing his love.

About the Reviewers

Anderson Patricio is an Exchange Server MVP and a Messaging consultant based in Toronto, Canada, designing and deploying solutions in clients located in North and South America. He has been working with Exchange since Version 5 and has had the opportunity to use PowerShell since its beta release (code name Monad at that time).

Anderson contributes to the Microsoft communities in several ways. In English, his blog www.andersonpatricio.ca is updated regularly with content for Exchange, PowerShell, and Microsoft in general. In Portuguese, he has an Exchange resource site (www.andersonpatricio.org). He is also a TechEd presenter in South America and also the creator of a couple of Exchange trainings in the Brazilian Microsoft Virtual Academy (MVA).

You can follow him on Twitter at http://twitter.com/apatricio.

He is the reviewer of several books such as Windows Powershell in Action by Bruce Payette, PowerShell in Practice by Richard Siddaway, and Microsoft Exchange 2010 PowerShell Cookbook by Mike Pfeiffer.

Donabel Santos is a SQL Server MVP and is the senior SQL Server Developer/DBA/Trainer at QueryWorks Solutions, a consulting and training company in Vancouver, BC. She has worked with SQL Server since Version 2000 on numerous development, tuning, reporting, and integration projects with ERPs, CRMs, SharePoint, and other custom applications. She holds MCITP certifications for SQL Server 2005/2008, and an MCTS for SharePoint. She is a Microsoft Certified Trainer (MCT), and is also the lead instructor for SQL Server Administration, Development, Tableau, and SSIS courses at the British Columbia Institute of Technology (BCIT). Donabel is a proud member of PASS (Professional Association of SQL Server), and a proud BCIT alumna (CST diploma and degree).

Donabel blogs (www.sqlmusings.com), tweets (@sqlbelle), speaks and presents (SQLSaturday, VANPASS, Vancouver TechFest, and many more), trains (BCIT, QueryWorks Solutions), and writes (Packt, Idera, SSWUG, and so on). She is the author of Packt's SQL Server 2012 with PowerShell V3 Cookbook, and a contributing author of Manning's PowerShell Deep Dives.

Thank you Eric, for all the support and love. Thank you for cooking the delicious dinners that invigorate me after a long day's work. You are my home.

Thank you to my family—Papa, Mama, JR, RR, Lisa—you all give me strength and I am very blessed to have you in my life. Special shout out to my Tito Boy, who proudly told people in his network about my first book – thank 
you Tito Boy.

Thank you to my BCIT family—Kevin Cudihee, Elsie Au, Joanne Atha, Charlie Blattler, Paul Mills, Bob Langelaan, Benjamin Yu, Brian Pidcock, Albert Wei and so many others—to all of my mentors, colleagues, and students, who never fail to inspire me to do better, be better. It's been a great ten years teaching at BCIT—and I look forward to a lot more wonderful years 
of learning, inspiring, and sharing.

Special thanks to the Microsoft team and Microsoft communities, especially #sqlfamily. You guys are awesome and so many of you continuously and selflessly share your knowledge and expertise to a lot of people. I've been on the receiving end so many times, and I hope I can continue to pay it forward. I am so proud to be part of this community.

Thank you to the PowerShell community, for the awesome blogs, books, and tweets, which immensely helped folks to learn, understand, and get excited about PowerShell.

Most importantly, thank you Lord, for all the miracles and blessings in 
my life.

www.PacktPub.com

Support files, eBooks, discount offers and more

You might want to visit www.PacktPub.com for support files and downloads related to your book.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters, and receive exclusive discounts and offers on Packt books and eBooks.

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books. 

Why Subscribe?

Fully searchable across every book published by PacktCopy and paste, print and bookmark contentOn demand and accessible via web browser

Free Access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.


Instant Updates on New Packt Books

Get notified! Find out when new books are published by following @PacktEnterprise on Twitter, or the Packt Enterprise Facebook page.

Preface

Automating server tasks allows administrators to repeatedly perform the same, or similar, tasks over and over again. With PowerShell scripts, you can automate server tasks and reduce manual input, allowing you to focus on more important tasks.

Windows Server 2012 Automation with PowerShell will show several ways for a Windows administrator to automate and streamline his/her job. Learn how to automate server tasks to ease your day-to-day operations, generate performance and configuration reports, and troubleshoot and resolve critical problems.

Windows Server 2012 Automation with PowerShell will introduce you to the advantages of using Windows Server 2012 and PowerShell. Each recipe is a building block that can easily be combined to provide larger and more useful scripts to automate your systems. The recipes are packed with examples and real world experience to make the job of managing and administrating Windows servers easier.

The book begins with automation of common Windows Networking components such as AD, DHCP, DNS, and PKI, managing Hyper-V, and backing up the server environment. By the end of the book you will be able to use PowerShell scripts to automate tasks such as performance monitoring, reporting, analyzing the environment to match best practices, and troubleshooting.

What this book covers

Chapter 1, Understanding PowerShell Scripting, explains how to use basic PowerShell features such as functions, cmdlets, modules, and loops. These are the basic building blocks of PowerShell that are used repeatedly and in various forms.

Chapter 2, Managing Windows Network Services with PowerShell, covers the installation and configuration of Active Directory, DNS, DHCP, and Certificate Services. This chapter should cover everything necessary to prepare an environment as a fully functioning Active Directory domain for use in labs or new domain build-outs.

Chapter 3, Managing IIS with PowerShell, covers how to install, configure, manage, and maintain IIS websites on Windows Server 8. In addition to basic management of IIS, this will also cover monitoring and reporting of IIS, using NLB for load balancing, and utilizing a dev/staging/prod configuration/promotion scheme. This chapter should cover everything necessary to set up and configure a load-balanced dev/test/prod web environment and automate code promotion.

Chapter 4, Managing Hyper-V with PowerShell, covers installing, configuring, and managing Hyper-V servers and guest OSs. In addition to basic management of Hyper-V, this chapter also covers how to automate the deployment and management of guest VMs, managing VM snapshots, migrate VMs between hosts and prepare a host for maintenance, and how to utilize clustering to make highly-available VMs. This chapter should cover everything necessary to set up and manage an enterprise Hyper-V farm, including reporting, performing maintenance, and monitoring performance.

Chapter 5, Managing Storage with PowerShell, covers how to configure and manage storage using traditional disk, storage pools, reduplication, and SANs.

Chapter 6, Managing Network Shares with PowerShell, covers creating, managing, securing, and using CIFS, NFS, and iSCSI shares. This chapter will also cover how to use server clustering to create highly available network shares, managing replication, and configuring BranchCache.

Chapter 7, Managing Windows Updates with PowerShell, This chapter details the installation and configuration of WSUS as well as the Windows Update client. Additionally, this chapter will include methods to report on installed updates and to automate update installation.

Chapter 8, Managing Printers with PowerShell, covers creation, managing, and updating of printers on print servers. This will also include using PowerShell to map clients to printers and using Windows Clustering to make highly available print servers.

Chapter 9, Troubleshooting Servers with PowerShell, covers utilization of PowerShell troubleshooting packs, Windows Best Practice Analyzers, and using Windows Event Logs. This will also include basic monitoring and configuration of services as well as creating a central Event Log server.

Chapter 10, Managing Performance with PowerShell, shows how to use PowerShell to track and report on historical performance and identify bottlenecks. This chapter will also show how to integrate PowerShell objects with Excel to create usable performance reports and graphs.

Chapter 11, Inventorying Servers with PowerShell, explains how to inventory the hardware and software configurations of Windows 8 servers and create a detailed inventory and configuration report. Additionally, this chapter will cover methods to track configuration changes over time and export the configuration report via Word. This chapter should cover everything necessary to create a centralized hardware and software inventory of all servers in the enterprise.

Chapter 12, Server Backup, covers setting up and scheduling backups on a Windows server. This will include on-demand backups, restoring files, and Windows components, and standardizing the configuration amongst systems.

What you need for this book

To make efficient use of this book, you will need Windows Server 2012 and Microsoft Office to perform code testing and practically implement the recipes mentioned in the book.

Who this book is for

This book is written to assist the daily tasks for systems administrators, engineers, and architects working with Windows Server 2012.

Conventions

In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.

Code words in text are shown as follows: "The installer is a fairly simple class, similar to the cmdlet class, which inherits the PSSnapin class and contains overrides that return information about the cmdlet."

A block of code is set as follows:

Function Multiply-Numbers { Param($FirstNum, $SecNum) Try { Write-Host ($FirstNum * $SecNum) } Catch { Write-Host "Error in function, present two numbers to multiply" } }

When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:

Write-Host "Static Size:`t`t" ("{0:0000000000.00}" -f $jenny) Write-Host "Literal String:`t`t" ("{0:000' Hello '000}" -f $jenny) Write-Host "Phone Number:`t`t" ("{0:# (###) ### - ####}" -f ($jenny*10000))

Any command-line input or output is written as follows:

Block-SmbShareAccess -Name Share2 -AccountName CORP\joe.smith ` -Confirm:$false

New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: "clicking the Next button moves you to the next screen".

Note

Warnings or important notes appear in a box like this.

Tip

Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the erratasubmissionform link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Piracy

Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors, and our ability to bring you valuable content.

Questions

You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.

Chapter 1. Understanding PowerShell Scripting

In this chapter we will cover the following recipes:

Managing security on PowerShell scriptsCreating and using functionsCreating and using modulesCreating and using PowerShell profilesPassing variables to functionsValidating parameters in functionsPiping data to functionsRecording sessions with transcriptsSigning PowerShell scriptsSending e-mailSorting and filteringUsing formatting to export numbersUsing formatting to export data viewsUsing jobsDealing with errors in PowerShellTuning PowerShell scripts for performanceCreating and using Cmdlets

Introduction

This chapter covers the basics related to scripting with PowerShell. PowerShell was released in 2006 and is installed by default starting with Windows 7 and Server 2008R2. PowerShell is also available as a download for Windows XP, Windows Vista, and Server 2003. One of the main differences between PowerShell and VBScript/JScript, the other primary scripting languages for Windows, is that PowerShell provides an interactive runtime. This runtime allows a user to execute commands in real time, and then save these commands as scripts, functions, or modules to be used later.

Since its introduction, support for PowerShell has increased dramatically. In addition to managing Windows environments, Microsoft quickly created snap-ins for additional applications such as Exchange Server, the System Center suite, and clustering. Additional vendors have also created snap-ins for PowerShell, with some of the most popular being VMware and NetApp.

Many of the recipes presented here are the building blocks commonly used in PowerShell such as signing scripts, using parameters, and sorting/filtering data.

Managing security on PowerShell scripts

Due to the powerful capabilities of PowerShell, maintaining a secure environment is important. Executing scripts from untrustworthy sources could damage data on your system and possibly spread viruses or other malicious code. To deal with this threat, Microsoft has implemented Execution Policies to limit what scripts can do.

Note

The execution policies only limit what can be performed by scripts, modules, and profiles, these policies do not limit what commands are executed in the interactive runtime.

How to do it...

In this recipe, we will view the system's current execution policy and change it to suit various needs. To do this, carry out the following steps:

To find the system's current execution policy, open PowerShell and execute Get-ExecutionPolicy.To change the system's execution policy, run Set-ExecutionPolicy <policy name> command.To reset the execution policy to the system default, set the policy to Undefined.To change the execution policy for a specific session, go to Start | Run and enter PowerShell.exe –ExecutionPolicy <policy name>.

How it works...

When a script is executed, the first thing PowerShell does is, determine the system's execution policy. By default, this is set to Restricted, which blocks all the PowerShell scripts from running. If the policy allows signed scripts, it analyzes the script to confirm it is signed and that the signature is from a trusted publisher. If the policy is set to unrestricted, then all the scripts run without performing checking.

Setting the execution policy is simply done via the command. Here we see several examples of viewing and setting the execution policy to various settings. There are six execution policies as follows:

Restricted: No scripts are executed. This is the default setting.AllSigned: This policy allows scripts signed by a trusted publisher to run.RemoteSigned: This policy requires remote scripts to be signed by a trusted publisher.Unrestricted: This policy allows all scripts to run. It will still prompt for confirmation for files downloaded from the internet.Bypass: This policy allows all scripts to run and will not prompt.Undefined: This policy resets the policy to the default.

When changing the execution policy, you will be prompted via a command line or pop-up window to confirm the change. This is another level of security, but can be disabled by using the –Force switch.

There's more...

Approving publishers: When running scripts from new publishers, there are two primary methods for approving them. The first method is to open the certificates MMC on the local computer and import the signer's CA into the Trusted Publishers store. This can be done manually or via a group policy. The second method is to execute the script, and when prompted, approve the publisher.Defining execution policy via GPO: The execution policy for individual computers, groups, or enterprise can be controlled centrally using group policies. The policy is stored under Computer Configuration | Policies | Administrative Templates | Windows Components | Windows PowerShell. Note however that this policy only applies to Windows 7/2008 or newer operating systems.Permissions to change the execution policy: Changing the execution policy is a system-wide change, and as such requires administrator level permissions. With Windows default access controls in place, this also requires you to start PowerShell as an administrator.

Changing the execution policy requires elevated permissions to run, so you may need to open PowerShell with Run as administrator to set the policy. If you are attempting to change the policy without sufficient permission, an error will be returned.

Tip

Best practice is to enforce some level of signature checking in most environments. In Dev/Test environments, it may be common to set the policy to Unrestricted to expedite testing, but it is always suggested to require fully signed scripts in production environments.