PowerShell 3.0 and later In PowerShell 3.0, a new feature called “Automatic Unrolling” was introduced. With it, you can write code like this:...
ps1
Copying Command Line History
All PowerShell versions To preserve all the PowerShell commands that you entered in a PowerShell session, check out this one liner:...
Getting Computer Serial Number
All PowerShell versions In a previous tip we illustrated how you can take a DELL serial number and check online the warranty status. Other vendors...
Checking DELL Warranty Online
PowerShell Version 2.0 and later If you own a DELL computer, you can take advantage of a web service that takes your computer serial number and...
Cmdlets to Manage MSI Packages
PowerShell 2.0 and later Anyone who needs to manage MSI installer packages may benefit from an open source project found here:...
Reading Multiline Text
PowerShell 3.0 and later Sometimes you will stumble across tips like the following one: $FilePath = "$env:SystemRoot\WindowsUpdate.log"...
Requiring Administrator Privileges
PowerShell 4.0 and later If you know that a given script needs Administrator privileges, then a simple #requires statement is enough to make sure...
Analyzing and Removing Print Jobs
Windows 8.1 or Server 2012 R2 Both Windows 8.1 and Server 2012 R2 come with a module called “PrintManagement”. It includes all cmdlets...
Listing All Print Jobs
Windows 8.1 or Server 2012 R2 Both Windows 8.1 and Server 2012 R2 come with a module called “PrintManagement”. It includes all cmdlets...
Remotely Updating Group Policy
Windows 8.1 or Server 2012 R2 To update Group Policy settings on a remote machine, use Invoke-GPUpdate, and submit the name of the computer where...
Managing Printers
Windows 8.1 or Server 2012 R2 Both Windows 8.1 and Server 2012 R2 come with a module called “PrintManagement”. It includes all cmdlets...
Simplifying .NET Types
All PowerShell versions PowerShell uses short names for the most common .NET types. To see if there is a short name for a .NET type you are using,...
Converting Code to Uppercase
PowerShell ISE 3.0 and later To turn PowerShell code to all uppercase letters in PowerShell ISE, select the text, then press CTRL+SHIFT+U. To turn...
Mapping Drives
PowerShell Version 3 and later To permanently map a network drive, use New-PSDrive with the –Persist parameter. This parameter makes the drive...
Using System Error Colors for Output
All Versions If your script wants to output warnings or error messages, you can use Write-Warning or Write-Error. Both cmdlets will use the default...
Resolving IP Addresses (and Parameter Types, Too)
PowerShell 2.0 and later Here is a function that illustrates two things: it shows how you can limit a parameter to a given data type, and it shows...
Conditional Breakpoints
PowerShell 3.0 and later The PowerShell ISE supports line breakpoints only: they make the code stop once the debugger hits that particular line. You...
Detecting 64-bit Operating System
Windows 7/Server 2008 R2 To detect whether a script runs in a 32-bit or 64-bit environment is fairly easy: check a pointer size, and test whether it...
Creating NTFS Security Report
All PowerShell Versions If you'd like to audit NTFS permissions on your file servers, here is a suggestion how you could start. This script...
Finding Explicit Permissions
All PowerShell versions Typically, NTFS permissions in the file system are inherited. You can, however, add explicit permissions to files and...
Accessing COM Objects without ProgID
All Versions Typically, to access COM objects, these objects need to register themselves in the Windows Registry, and PowerShell needs the...
Dealing with Hidden Files
PowerShell 3.0 and later When you use Get-ChildItem to list files, by default, hidden files are excluded. To include hidden files, use the...
Changing GPO Description/Comment
GroupPolicy Module When you create a new Group Policy, you can set a comment (or description). There is no apparent way, however, to change the...
Checking PowerShell Security
PowerShell 2.0 and later This sample code finds all PowerShell scripts in a given drive, then checks the scripts for valid digital signatures, and...