Prof. Powershell
PowerShell Pack
There are more than 800 functions and cmdlets, so start getting familiar with them.
- By Jeffery Hicks
- 11/09/2009
As part of the Windows 7 Resource Kit, Microsoft is including the PowerShell Pack. This is a collection of almost 800 PowerShell 2.0 functions and scripts, organized into modules. You can download PowerShell Pack here. The MSI package will install everything to your home directory:
PS C:\> dir $home\documents\windowspowershell\modules
Directory: C:\Users\Jeff\documents\windowspowershell\modules
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 10/16/2009 1:33 PM DotNet
d---- 10/16/2009 1:33 PM FileSystem
d---- 10/16/2009 1:33 PM IsePack
d---- 10/16/2009 1:33 PM PowerShellPack
d---- 10/16/2009 1:33 PM PSCodeGen
d---- 10/16/2009 1:33 PM PSImageTools
d---- 10/16/2009 1:33 PM PSRSS
d---- 10/16/2009 1:33 PM PSSystemTools
d---- 10/16/2009 1:33 PM PSUserTools
d---- 10/16/2009 1:33 PM Setup
d---- 10/16/2009 1:33 PM TaskScheduler
d---- 10/16/2009 1:33 PM WPK
-a--- 10/12/2009 4:23 PM 27680 About the Windows 7 Resource Kit Powe...
-a--- 10/12/2009 4:23 PM 4791 Readme1st.txt
-a--- 10/12/2009 4:26 PM 236247 Writing User Interfaces with WPK.docx
When you get a moment, be sure to read the documentation. But I expect you want to dive in. The scripts and functions are organized by module:
- WPK: Create rich user interfaces quick and easily from Windows PowerShell. This goes beyond WinForms.
- TaskScheduler: List scheduled tasks, create or delete tasks. The name says it all.
- FileSystem: Monitor files and folders, check for duplicate files, and check disk space.
- IsePack: Scripts for the Integrated Scripting Environment with over 35 shortcuts
- DotNet: Explore loaded types, find commands that can work with a type, and explore how you can use PowerShell, DotNet and COM together
- PSImageTools: Convert, rotate, scale, and crop images and get image metadata
- PSRSS: Use the FeedStore from PowerShell, and I’m not talking about horses.
- PSSystemTools: Get Operating System or Hardware Information
- PSUserTools: Get the users on a system, check for elevation, and start-processaadministrator
- PSCodeGen: Generates PowerShell scripts, C# code, and P/Invoke
Use Import-Module to load up one of these beauties.
PS C:\> get-module PSSystemTools
ModuleType Name ExportedCommands
---------- ---- ----------------
Script PSSystemTools {Test-32Bit, Get-USB, Get-OSVersion, Get-Mul...}
It’s a little hard from here to see what’s included so we’ll use Get-Command instead.
PS C:\> gcm -module PSSystemTools | ft CommandType,Name -auto
CommandType Name
----------- ----
Function Get-BootStatus
Function Get-DisplaySetting
Function Get-Font
Function Get-LogicalDiskInventory
Function Get-MultiTouchMaximum
Function Get-OSVersion
Function Get-Processor
Function Get-SystemFont
Function Get-USB
Function Get-WindowsEdition
Function Import-IniFile
Function Test-32Bit
Function Test-64Bit
Even though these are functions and not cmdlets, they have been written as advanced functions that behave essentially as cmdlets. Very often they will include help:
PS C:\> help get-processor
NAME
Get-Processor
SYNOPSIS
Gets processor information for local and remote computers.
SYNTAX
Get-Processor [[-Computer] <Object>] [<CommonParameters>]
DESCRIPTION
The Get-Processor function gets information about the processors
on local and remote computers, including the processor architecture.
RELATED LINKS
REMARKS
To see the examples, type: "get-help Get-Processor -examples".
For more information, type: "get-help Get-Processor -detailed".
For technical information, type: "get-help Get-Processor -full".
That’s handy. Let me try it out:
PS C:\> get-processor
Architecture : X86
__GENUS : 2
__CLASS : Win32_Processor
__SUPERCLASS : CIM_Processor
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_Processor.DeviceID="CPU0"
__PROPERTY_COUNT : 48
__DERIVATION : {CIM_Processor, CIM_LogicalDevice, CIM_LogicalElemen...
__SERVER : GODOT7
__NAMESPACE : root\cimv2
__PATH : \\GODOT7\root\cimv2:Win32_Processor.DeviceID="CPU0"
AddressWidth : 32
Availability : 3
Caption : x86 Family 6 Model 9 Stepping 5
ConfigManagerErrorCode :
ConfigManagerUserConfig :
CpuStatus : 1
CreationClassName : Win32_Processor
CurrentClockSpeed : 1598
CurrentVoltage : 33
DataWidth : 32
Description : x86 Family 6 Model 9 Stepping 5
DeviceID : CPU0
ErrorCleared :
ErrorDescription :
ExtClock : 133
Family : 185
...
I truncated the output, but you get the idea. The function is returning a WMI object, which I probably could have done myself with Get-WMIObject, but the function saves me time and I can use it like I would a cmdlet:
PS C:\> get-processor | Select Name,Manufacturer
Name Manufacturer
---- ------------
Intel(R) Pentium(R) M processor 1600MHz GenuineIntel
The PowerShell Pack is loaded with goodies like this that will keep you busy for weeks to come. I can’t wait to dig in.